📜  图片的OpenCV基本操作(1)

📅  最后修改于: 2023-12-03 15:23:05.357000             🧑  作者: Mango

图片的OpenCV基本操作

OpenCV是一种用于计算机视觉的开源库。作为一名程序员,了解OpenCV是必不可少的,因为它可以用于处理从图像,视频,到模式识别等不同类型的数据。在这篇文章中,我们将介绍一些基本的OpenCV图像操作。

读取和显示图像

要读取一张图像,我们可以使用OpenCV中的函数cv2.imread()。以下是一个例子:

import cv2

img = cv2.imread('image.jpg')

这将读取名为'image.jpg'的图像并将其存储在img变量中。现在我们可以使用cv2.imshow()函数在窗口中显示图像。

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里的waitKey()函数可以暂停程序,直到用户按下任意按键。最后使用destroyAllWindows()函数关闭窗口。

保存图像

要保存图像,我们可以使用cv2.imwrite()函数。以下是一个例子:

import cv2

img = cv2.imread('image.jpg')
cv2.imwrite('new_image.jpg', img)

这将在当前目录下创建名为'new_image.jpg'的新图像,并将'img'变量中的图像写入该图像。

调整图像大小

要调整图像的大小,我们可以使用cv2.resize()函数。以下是一个例子:

import cv2

img = cv2.imread('image.jpg')
resized_img = cv2.resize(img, (new_width, new_height))

这将把图像的宽度和高度调整为“new_width”和“new_height”。

裁剪图像

要裁剪图像,我们可以使用OpenCV中的numpy数组切片。以下是一个例子:

import cv2

img = cv2.imread('image.jpg')
cropped_img = img[start_y:end_y, start_x:end_x]

这将裁剪从start_x到end_x,从start_y到end_y的矩形区域。

图像旋转

要旋转图像,我们可以使用cv2.getRotationMatrix2D()和cv2.warpAffine()函数。以下是一个例子:

import cv2
import numpy as np

img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]

# 旋转45度
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)
rotated_img = cv2.warpAffine(img,M,(cols,rows))

这将将图像旋转45度。

图像翻转

要翻转图像,我们可以使用cv2.flip()函数。以下是一个例子:

import cv2

img = cv2.imread('image.jpg')

# 水平翻转
flipped_img = cv2.flip(img, 1)

# 垂直翻转
flipped_img_2 = cv2.flip(img, 0)

# 水平和垂直翻转
flipped_img_3 = cv2.flip(img, -1)

这将分别对图像进行水平,垂直和水平垂直翻转。

图像平移

要平移图像,我们可以使用cv2.warpAffine()函数。以下是一个例子:

import cv2
import numpy as np

img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]

# 定义平移矩阵,向右移动100个像素,向下移动50个像素
M = np.float32([[1,0,100],[0,1,50]])
shifted_img = cv2.warpAffine(img,M,(cols,rows))

这将将图像向右移动100个像素,向下移动50个像素。

以上是一些基本的OpenCV图像操作。掌握这些操作,您就可以开始处理各种类型的图像和视频数据了。