图像处理必备Python函数:opencv库常用函数介绍
图像处理是计算机视觉领域的重要分支,它广泛应用于计算机视觉、机器视觉、计算机图形学、图像识别等领域。在 Python 中,opencv 库是常用的图像处理库之一,它提供了丰富的图像处理函数和工具。本文将介绍一些常用的 opencv 函数,让读者掌握 opencv 基本用法,快速上手图像处理。
1. 读取图片
使用 opencv 中的 imread() 函数可以读取图片,具体用法如下:
import cv2
img = cv2.imread('image.jpg')
其中,img 是返回的图片的 numpy 数组,即读取的图像数据。imread() 的 个参数是要读取的图片文件名,可以是绝对路径或相对路径。
2. 显示图片
使用 opencv 中的 imshow() 函数可以显示图片,具体用法如下:
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
其中, 个参数是窗口的名称,第二个参数是要显示的图片的 numpy 数组。imshow() 会打开一个名为 “image” 的窗口,并在其中显示图片。waitKey() 函数用于等待用户按下任意键,防止窗口一闪而过。最后,用 destroyAllWindows() 函数关闭窗口。
3. 保存图片
使用 opencv 中的 imwrite() 函数可以保存图片,具体用法如下:
cv2.imwrite('new_image.jpg', img)
个参数是要保存的文件名(可以是绝对路径或相对路径),第二个参数是要保存的图片的 numpy 数组。
4. 图像缩放
使用 opencv 中的 resize() 函数可以对图像进行缩放,具体用法如下:
resized_img = cv2.resize(img, (new_width, new_height))
个参数是要缩放的图像,第二个参数是缩放后的图像大小,可以是一个元组,也可以是一个整数。
5. 图像旋转
使用 opencv 中的 getRotationMatrix2D() 和 warpAffine() 函数可以对图像进行旋转,具体用法如下:
import numpy as np # 旋转角度为 theta theta = 30 rows, cols, channels = img.shape matrix = cv2.getRotationMatrix2D((cols/2, rows/2), theta, 1) rotated_img = cv2.warpAffine(img, matrix, (cols, rows))
其中,getRotationMatrix2D() 函数用于生成旋转矩阵, 个参数是旋转中心点的坐标,第二个参数是旋转的角度,第三个参数是缩放因子。warpAffine() 函数用于根据旋转矩阵和输出图像大小进行旋转变换。
6. 图像翻转
使用 opencv 中的 flip() 函数可以对图像进行翻转,具体用法如下:
# 水平翻转 flipped_img1 = cv2.flip(img, 1) # 垂直翻转 flipped_img2 = cv2.flip(img, 0) # 同时进行水平和垂直翻转 flipped_img3 = cv2.flip(img, -1)
其中,第二个参数控制翻转方向,1 表示水平翻转,0 表示垂直翻转,-1 表示同时进行水平和垂直翻转。
7. 图像平移
使用 opencv 中的 warpAffine() 函数可以对图像进行平移,具体用法如下:
import numpy as np # 在水平方向上移动 tx 个像素,在垂直方向上移动 ty 个像素 tx, ty = 100, 50 rows, cols, channels = img.shape matrix = np.float32([[1, 0, tx], [0, 1, ty]]) translated_img = cv2.warpAffine(img, matrix, (cols, rows))
其中, 个参数是要平移的图像,第二个参数是平移矩阵,第三个参数是输出图像大小。
8. 图像直方图均衡化
使用 opencv 中的 equalizeHist() 函数可以对图像进行直方图均衡化,具体用法如下:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) equalized_img = cv2.equalizeHist(gray)
对于彩色图像,需要先将图像转换为灰度图像。equalizeHist() 函数将对灰度图像进行直方图均衡化,产生更好的视觉效果。
