内容来自OpenCV-Python Tutorials 自己翻译整理 目标:
读取图片,显示图片,保存图片学习以下函数 cv2.imread(), cv2.imshow() , cv2.imwrite()使用Matplotlib显示图片读取图片:
使用cv2.imread() 函数读取图片,图片的位置应该是在当前的目录下 该函数有两个参数,第一个参数是图片名称,第二个参数是使用哪种方式读取图片。 第二个参数有如下三种
cv2.IMREAD_COLOR 加载一个彩色图片,图片的透明度会被忽律,也是缺省参数。cv2.IMREAD_GRAYSCALE 加载黑白图片cv2.IMREAD_UNCHANGED 加载包含alpha通道的图片上面三个参数可以用1 0 -1表示
#!/usr/bin/env python# coding=utf-8import cv2import numpy as np#把图片加载为黑白图片img = cv2.imread('test.jpg',0)如果图片的路径错误,不会抛出错误,什么也不输出
显示图片: 使用 cv2.imshow()函数在窗口中显示图片,窗口的尺寸自动适应图片大小,函数中有两个参数,第一个参数是窗口名称,第二个参数是加载的图片,可以设置不同窗口名,创建多个窗口。
cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.waitKey() 函数绑定键盘,参数是毫秒,该函数等待指定的毫秒来接受键盘输入,按下任意键继续
cv2.destroyAllWindows() 销毁所有窗口
想销毁指定窗口可以使用 cv2.destroyWindow()函数,参数是想要销毁的窗口名称
写入图片: 使用 cv2.imwrite() 函数保存图片 该函数中有两个参数,第一个是文件名,第二个是想要保存的图片
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npimg = cv2.imread('test.jpg',0)cv2.imshow('image',img)k = cv2.waitKey(0)if k == 27: # wait for ESC key to exit cv2.destroyAllWindows()elif k == ord('s'): # wait for 's' key to save and exit cv2.imwrite('messigray.png',img) cv2.destroyAllWindows()效果
使用Matplotlib库:
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npfrom matplotlib import pyplot as pltimg=cv2.imread("test.jpg",0)plt.imshow(img,cmap='gray',interpolation='bicubic')plt.xticks([]),plt.yticks([])plt.show()注意: 彩色图片使用opencv加载是使用BGR模式,但是使用Matplotlib库是用RGB模式,所以彩色图片不会在Matplotlib中正确的显示,如果使用opencv读取图片。 原图 使用Matplotlib读取的图片
-_-蓝色的多肉变成黄色的了 解决方法
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npfrom matplotlib import pyplot as pltimg=cv2.imread("test.jpg")b,g,r=cv2.split(img)img2 = cv2.merge([r,g,b])plt.imshow(img2)plt.xticks([]),plt.yticks([])plt.show()新闻热点
疑难解答