opencv简介
OpenCV 是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。
环境配置
使用conda创建环境,pip下载numpy、matplotlib、opencv-python,再通过pycharm使用对应的解释器。这里在网上看到推荐下载opencv-contrib-python包,但是使用基础包大概没有什么问题,大不了以后再换
- 这里遇到了pycharm没有opencv的代码补全功能,参考(https://zhuanlan.zhihu.com/p/617164055)
将cv2.pyd放到上一级目录即可解决
import numpy as np
import matplotlib
import cv2 as cv
图像入门
读取图像
- 使用cv.imread()读取图像
cv.imread()含有两个参数,第一个是图像的地址,地址出错会返回None;第二个如下:- cv.IMREAD_COLOR(-1): 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
- cv.IMREAD_GRAYSCALE(0,默认):以灰度模式加载图像
- cv.IMREAD_UNCHANGED(1):加载图像,包括alpha通道
- 使用cv.imshow()显示图像
cv.imshow第一个参数为显示名称;第二个参数为图片对象- 此处还使用了cv.waitKey()键盘绑定函数,该函数等待任何键盘事件指定的毫秒。如果在这段时间内按下任何键,程序将继续运行。如果0被传递,它将无限期地等待一次敲击键。它也可以设置为检测特定的按键,waitkey函数的返回值(在按了按键的前提下)就是对应按键的ASCAII码,而且是区分大小写的。
- 以及cv.destroyAllWindows()函数关闭创建的所有窗口。如果要销毁任何特定的窗口,使用函数cv.destroyWindow()在其中传递确切的窗口名称作为参数。
- 代码示例:
img = cv.imread('./picture/1.jpg', 1) cv.imshow('./picture/1.jpg', img) cv.waitKey(0) cv.destroyAllWindows()
- 使用cv.imwrite()保存图像
第一个参数是文件地址;第二个参数是保存的图像img = cv.imread('./picture/1_read.jpg.jpg', 1) cv.imshow('./picture/1_read.jpg', img) k = cv.waitKey(0) if k == 27: # 等待ESC退出 cv.destroyAllWindows() elif k == ord('s'): # 等待关键字,保存和退出 cv.imwrite('/picture/1_write.png', img) cv.destroyAllWindows()
- 使用Matplotlib显示和操作图像
具体函数资源在:(http://matplotlib.org/api/pyplot_api.html)- 注意:OpenCV加载的彩色图像处于BGR模式。但是Matplotlib以RGB模式显示。因此,如果使用OpenCV读取彩色图像,则Matplotlib中将无法正确显示彩色图像。
img = cv.imread('./picture/1_read.jpg', 0) plt.imshow(img, cmap='gray', interpolation='bicubic') plt.xticks([]), plt.yticks([]) # 隐藏xy轴的刻度值 plt.show()