您的位置:首页 > 编程语言 > Python开发

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

2017-12-18 22:05 921 查看
进行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 cv2

img = 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 cv2

img = 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'):
break
else:
pass
cv2.destroyAllWindows()
示例代码比较简单,就不过多赘述,运行示例:



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

Matplotlib
Matplotlib是Python的绘图库,提供了各种绘图方法,可以进行图像放大、保存等操作。我们运行下面的示例:

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('girl.jpg', 0)
plt.imshow(img, cmap='jet')
# 隐藏x、y坐标
plt.xticks([]), plt.yticks([])
plt.show()
运行结果:



原图



利用Matplotlib转换之后的图像
值得注意的是OpenCV加载的彩色图像处于BGR模式。但Matplotlib以[b]RGB<
4000
/strong>模式显示。因此,如果使用OpenCV读取图像,则彩色图
像将无法在Matplotlib中正确显示。
Matplotlib详细请参阅:Matplotlib
Tutorials
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息