OpenCV-0. 图像读取、显示与保存

2018-06-05  本文已影响0人  ydlstartx

原文

读取图片

retval = cv2.imread( filename[, flags] )

使用函数cv2.imread()来读取指定地址的图片,图片为numpy数组。支持的全部格式可看文档。第二个参数指出读取的方式,常用的三个:

全部的可用标志在这里

  • 也可分别使用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]
上一篇下一篇

猜你喜欢

热点阅读