📅  最后修改于: 2023-12-03 15:23:05.357000             🧑  作者: Mango
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图像操作。掌握这些操作,您就可以开始处理各种类型的图像和视频数据了。