读取图片
retval = cv2.imread( filename[, flags] )
使用函数cv2.imread()来读取指定地址的图片,图片为numpy数组。支持的全部格式可看文档。第二个参数指出读取的方式,常用的三个:
- cv2.IMREAD_COLOR:默认值,以BGR格式读取彩色图片。
- cv2.IMREAD_GRAYSCALE:将图片转为单通道灰度图片读取。
- cv2.IMREAD_UNCHANGED:返回带有alpha通道的图片。
全部的可用标志在这里。
- 也可分别使用1、0、-1来表示上面三个标志。
- 如果图片地址错误,该函数并不会抛出错误,而是会返回None。
显示图片
None = cv.imshow( winname, mat )
可以使用函数cv2.imshow()在指定窗口中显示图片,第一个参数为窗口名,第二个参数为待显示图片。
如果使用cv.namedWindow()创建窗口时使用的是cv.WINDOW_AUTOSIZE标志,那么图片会以其本身的大小显示,否则图片会根据窗口大小进行缩放。如果调用该函数之前没有创建窗口,则该函数会使用cv.WINDOW_AUTOSIZE标志来自动创建一个窗口,这是窗口大小也就是固定的。
如果要显示的图片大于屏幕分辨率,则需要提前使用cv.WINDOW_NORMAL标志来创建一个窗口,这是窗口大小可以被缩放。
调用cv2.imshow()之后,需要接着调用cv2.waitKey()函数,其会指定显示图片的时间(毫秒)。如果不调用该函数,则图片不会被显示。如cv2.waitKey(0)会一直显示图片,直到按下任意键。cv2.waitKey(25)会显示图片25ms,之后会自动关闭(如果在读取视频的循环中调用,则会按帧显示视频)。
可以使用cv.destroyAllWindows()来关闭所有的窗口。若要关闭指定名的窗口,可以使用cv.destroyWindow()。
存储图片
retval = cv.imwrite( filename, img[, params] )
使用函数cv2.imwrite()来存储图片。第一个参数为文件名,第二个参数为待存图片,第三个参数为写图片标志,具体可看这里。
cv2.imread()默认读取的图片为BGR格式,而matplotlib使用的是RGB格式。所以使用matplotlib之前需要先转换一下。
img = cv2.imread('image.jpg')
# 第一种转换方法
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
# 第二种转换方法
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 第三种转换方法
img = img[..., ::-1]