Python3+OpenCV学习笔记(一):图像加载、显示和保存

来源:互联网 发布:perl from json 编辑:程序博客网 时间:2024/04/30 07:24

进行Python和OpenCV学习,利用写博客笔记的方式来督促自己,并记录学习过程、学习心得和遇到的问题。

Python版本是Python3.5,OpenCV版本OpenCV.3.3.0,开发环境为PyCharm,参考文档链接如下:

OpenCV-Doc


进行图像处理的第一步什么?当然是找一张图片咯偷笑

开个玩笑,第一步当然是加载图像,所以我们将用到cv2中的第一个函数cv2.imread(filename,  mode),“filename”为需要加载的图像文件的名称,“mode”有-1,0,1三种参数,分别对应IMREAD_COLOR(默认标志,加载彩色图像,任何图像的透明度都将被忽略),IMREAD_GRAYSCALE(以灰度模式加载图像),IMREAD_UNCHANGED(加载含Alpha通道的图像,即含有透明度通道)
“mode”参数可以选择默认。
img = cv2.imread('Rachel.jpg')
加载图像后,当然需要显示出来,我们才能看到,所以,接下来用到第二个函数cv2.imshow(windowname, filename)“windowname”输入显示窗口的名称,参数类型str,需要开启多个窗口时,只需要“windowname”不同即可。
下面我们输入下列代码:
import cv2img = cv2.imread('Rachel.jpg', 0)cv2.imshow('WindowOne', img)# 等待按键输入cv2.waitKey()# 关闭所有窗口,释放资源cv2.destroyAllWindows()
cv2.waitKey(*)为键盘绑定函数,表示等待 “*” 毫秒,检测键盘是否有输入,返回值为ACSII码。默认参数为“0”,将一直等待输入,有键盘输入事件后才执行后面的函数。
cv2.destroyAllWindows()销毁所有窗口,回收资源。如果需要销毁特定窗口,则使用函数cv2.destroyWindow(),传递窗口名即可。
下面我们看看效果图:


我们已经将原图转化为灰度图显示了,如果我们想将图片保存下来该怎么办呢?
祭出下一个函数cv2.imwrite(filename, object)“filename”保存文件名字和格式,参数类型str,如‘rachel.png’,‘object’为想要保存的图像对象。
import cv2img = cv2.imread('Rachel.jpg')# 将img从BGR图像转换为灰度图并存入img2中img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )cv2.imshow('WindowOne', img)# 将img2保存到目录中,命名为“imwrite.png”cv2.imwrite('imwrite.png', img2)while True:if (cv2.waitKey() & 0xFF) == ord('q'):breakelse:passcv2.destroyAllWindows()
示例代码比较简单,就不过多赘述,运行示例:


可以看到在目录下出现了红色框中的“imwrite.png”文件。

Matplotlib
Matplotlib是Python的绘图库,提供了各种绘图方法,可以进行图像放大、保存等操作。我们运行下面的示例:
import cv2from matplotlib import pyplot as pltimg = cv2.imread('girl.jpg', 0)plt.imshow(img, cmap='jet')# 隐藏x、y坐标plt.xticks([]), plt.yticks([])  plt.show()
运行结果:

原图

利用Matplotlib转换之后的图像
值得注意的是OpenCV加载的彩色图像处于BGR模式。但Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则彩色图
像将无法在Matplotlib中正确显示。
Matplotlib详细请参阅:Matplotlib Tutorials







阅读全文
0 0
原创粉丝点击