Python3+OpenCV学习笔记(一):图像加载、显示和保存
2017-12-18 22:05
921 查看
进行Python和OpenCV学习,利用写博客笔记的方式来督促自己,并记录学习过程、学习心得和遇到的问题。
Python版本是Python3.5,OpenCV版本OpenCV.3.3.0,开发环境为PyCharm,参考文档链接如下:
OpenCV-Doc
进行图像处理的第一步什么?当然是找一张图片咯
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/33c29e3268d66ef5c09858efe40a3635.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/3b1078c934146b40a2ec1cb890af838f)
开个玩笑,第一步当然是加载图像,所以我们将用到cv2中的第一个函数cv2.imread(filename, mode),“filename”为需要加载的图像文件的名称,“mode”有-1,0,1三种参数,分别对应IMREAD_COLOR(默认标志,加载彩色图像,任何图像的透明度都将被忽略),IMREAD_GRAYSCALE(以灰度模式加载图像),IMREAD_UNCHANGED(加载含Alpha通道的图像,即含有透明度通道)
“mode”参数可以选择默认。
filename)“windowname”输入显示窗口的名称,参数类型str,需要开启多个窗口时,只需要“windowname”不同即可。
下面我们输入下列代码:
cv2.destroyAllWindows()销毁所有窗口,回收资源。如果需要销毁特定窗口,则使用函数cv2.destroyWindow(),传递窗口名即可。
下面我们看看效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/9059d731d13ecb9f73d9719d09f11300)
我们已经将原图转化为灰度图显示了,如果我们想将图片保存下来该怎么办呢?
祭出下一个函数cv2.imwrite(filename, object)“filename”保存文件名字和格式,参数类型str,如‘rachel.png’,‘object’为想要保存的图像对象。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/8891754278a5f1cf24731124f5970708)
可以看到在目录下出现了红色框中的“imwrite.png”文件。
Matplotlib
Matplotlib是Python的绘图库,提供了各种绘图方法,可以进行图像放大、保存等操作。我们运行下面的示例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/bb7e6694b4154128f144e90df8ffd056)
原图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/e4878500d2f4a3c4f5b03f70f6b74017)
利用Matplotlib转换之后的图像
值得注意的是OpenCV加载的彩色图像处于BGR模式。但Matplotlib以[b]RGB<
4000
/strong>模式显示。因此,如果使用OpenCV读取图像,则彩色图
像将无法在Matplotlib中正确显示。
Matplotlib详细请参阅:Matplotlib
Tutorials
Python版本是Python3.5,OpenCV版本OpenCV.3.3.0,开发环境为PyCharm,参考文档链接如下:
OpenCV-Doc
进行图像处理的第一步什么?当然是找一张图片咯
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/33c29e3268d66ef5c09858efe40a3635.gif)
开个玩笑,第一步当然是加载图像,所以我们将用到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
相关文章推荐
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- 【基于C++和Python的Opencv3学习笔记之图像载入、显示和保存】
- OpenCV 2 学习笔记(4): 加载,显示和保存图像,Mat类与IplImage类
- Python OpenCV学习笔记之:图像读取,显示及保存
- opencv学习笔记2——载入,显示,复制,旋转,保存图像及灰度图
- 【OpenCV学习笔记】三、图像读取、显示及保存
- openCV Python学习笔记(一)图片的读入,显示与保存
- python3.6.3+opencv3.3.0学习笔记三--本地图像显示
- OpenCV(C++接口)学习笔记1-图像的读取、显示、保存
- 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
- 【Python_OpenCv】笔记1:基于Python和OpenCv的图片的加载,显示和图片的保存
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存
- openCV-Python笔记一:图像的读取、显示和保存
- openCV-Python笔记一:图像的读取、显示和保存
- 小强学Python+OpenCV之-1.1图像加载、显示、保存
- opencv学习笔记-图像载入、显示、保存
- opencv学习笔记 一 载入、显示和保存图像
- opencv 2.x学习笔记(一)加载和显示图像
- opencv学习(二)之图像的加载、显示、保存
- openCV—Python(2)—— 加载、显示和保存图像