一、什么是cv2库
cv2库是Python中用来增强图像处理能力的库。OpenCV是一个由英特尔公司开源的计算机视觉库。OpenCV始于1999年,如今这个开源计算机视觉库包含了超过2500个优化的算法。在cv2库中,opencv-python是包含了OpenCV库Python版本的包,它封装了许多OpenCV的函数和类,可以快速地完成图片和视频处理等功能。以下将演示cv2的安装步骤。
二、安装Python的cv2库
在Windows系统中安装cv2库,只需要通过pip指令安装即可。需要在CMD命令行或者Anaconda Prompt下使用以下指令进行安装:
pip install opencv-python
在Linux或Mac中,需要使用以下指令进行安装:
pip3 install opencv-python
在安装完成后,可以通过以下指令进行验证:
import cv2 print(cv2.__version__)
如果cv2库能够顺利导入且版本号打印出来,则证明该库已成功安装。
三、cv2库的基础应用
1. 读取并显示一张图片
以下代码演示如何使用cv2库读取并显示一张图片:
import cv2 img = cv2.imread('image.jpg') cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
上面的代码中,cv2.imread('image.jpg')函数会读取当前目录下的image.jpg文件。cv2.imshow('image', img)函数则会创建一个名为image的窗口用来展示读取到的图片,cv2.waitKey(0)函数则会暂停并等待用户按下任意键,直至cv2.destroyAllWindows()函数释放全部资源并关闭所有窗口。
2. 读取并显示一段视频
以下代码演示如何使用cv2库读取并展示一段视频:
import cv2 cap = cv2.VideoCapture('video.mp4') while True: ret, frame = cap.read() if ret: cv2.imshow('video', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
上面的代码中,cv2.VideoCapture('video.mp4')函数会读取当前目录下的video.mp4视频文件。接下来会从视频中逐帧读取每一帧并通过cv2.imshow('video', frame)函数来显示。当用户按下键盘上的'q'键时,则表示程序终止。最后会通过cap.release()函数释放视频资源,并通过cv2.destroyAllWindows()关闭所有窗口。
四、cv2库的进阶应用
1. 图片缩放
以下代码演示如何使用cv2.resize()函数对一张图片进行缩放:
import cv2 img = cv2.imread('image.jpg') # resize 图片 img_resized = cv2.resize(img, (800, 600), interpolation = cv2.INTER_AREA) cv2.imshow('image', img_resized) cv2.waitKey(0) cv2.destroyAllWindows()
上述代码中,cv2.resize()函数接收两个参数,分别是图片和目标大小。最后一个参数interpolation表示如何进行图片插值的处理方式,常用的有两种:cv2.INTER_AREA和cv2.INTER_CUBIC。cv2.imshow()函数用于显示缩放后的图片。
2. 图片旋转
以下代码演示如何使用cv2.getRotationMatrix2D()函数对一张图片进行旋转:
import cv2 import numpy as np img = cv2.imread('image.jpg') # rotate 图片 (h, w) = img.shape[:2] center = (w / 2, h / 2) M = cv2.getRotationMatrix2D(center, 45, 1.0) img_rotated = cv2.warpAffine(img, M, (w, h)) cv2.imshow('image', img_rotated) cv2.waitKey(0) cv2.destroyAllWindows()
上述代码中,cv2.getRotationMatrix2D()函数接收三个参数,分别是旋转中心、旋转角度和缩放比例。cv2.warpAffine()函数则是用于对图片进行仿射变换,这里通过cv2.getRotationMatrix2D()计算出的旋转矩阵来实现旋转的操作。
3. Canny边缘检测
以下代码演示如何使用cv2.Canny()函数对一张图片进行边缘检测:
import cv2 img = cv2.imread('image.jpg') #边缘检测 edges = cv2.Canny(img,100,200) cv2.imshow('image', edges) cv2.waitKey(0) cv2.destroyAllWindows()
上述代码中,cv2.Canny()函数接收三个参数,分别是图片、最小阈值和最大阈值。通过调整这两个阈值能够得到不同的效果。
4. 图片腐蚀
以下代码演示如何使用cv2.erode()函数对一张图片进行腐蚀处理:
import cv2 import numpy as np img = cv2.imread('image.jpg') # 腐蚀处理 kernel = np.ones((5,5),np.uint8) img_eroded = cv2.erode(img,kernel,iterations = 1) cv2.imshow('image', img_eroded) cv2.waitKey(0) cv2.destroyAllWindows()
上述代码中,cv2.erode()函数接收三个参数,分别是图片、卷积核和迭代次数。这里使用了一个5x5大小的卷积核,迭代次数为1。
五、总结
本文介绍了Python中用于加强图像处理能力的cv2库,并演示了cv2库的基础应用和进阶应用。通过学习本文中的内容,您可以了解到如何安装cv2库,并了解cv2库的常用函数和使用方法。同时,您还可以通过调整参数实现不同的图像处理效果。