前言
OpenCV-Python Gui模块主要是实现一些图形用户接口,例如创建窗口显示图像、画图、鼠标事件等。
读取图像
使用cv.imread()函数读取图像,第一个参数为图像的相对路径或绝对路径,第二个参数为读取图像的方式:
- CV.IMREAD_COLOR: 加载彩色图像,忽略透明度通道。默认参数
- CV.IMREAD_GRAYSCALE: 加载为灰度图
- CV.IMREAD_UNCHANGED: 加载图像,包括alpha通道
上面三个参数也可分别用1,0,-1替代。
import numpy as np
import cv2 as cv
# 读取灰度图
img = cv.imread('messi5.jpg', 0)
显示图像
使用cv.imshow()函数在窗口中显示图像。第一个参数是窗口名,字符串类型;第二个参数是图像。
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
cv.waitKey()是一个键盘绑定函数。它的参数是毫秒。该函数等待任何键盘事件的指定毫秒数,如果在这段时间内按下键盘,程序就会继续。如果参数是0,则会一直等待按键。也可以用它等于某个值来检测某个特定的按键是否按下。
cv.destroyAllWindows()用来关闭窗口。如果想关闭某个具体的窗口,可以使用cv.destroyWindow(),其参数是窗口名字符串。
如果想先创建一个窗口之后再加载图像,可以使用cv.namedWindow()函数,默认参数是cv.WINDOW_AUTOSIZE,可以自适应窗口大小。如果想调整窗口大小,可以使用cv.WINDOW_NORMAL参数。
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
保存图像
使用cv.imwrite()保存图像。第一个参数是文件名,第二个参数是要保存的图像。
cv.imwrite('messigray.png', img)
这会将图像以PNG格式保存在工作目录下。
小结
下面的程序将一张图片加载为灰度图并显示,如果按下Esc键退出程序,如果按下s键则保存并退出。
import numpy as np
import cv2 as cv
# 读取灰度图
img = cv.imread('messi5.jpg', 0)
cv.imshow('image', img)
k = cv.waitKey(0)
if k == 27: # 等待ESC键退出
cv.destroyAllWindows()
elif k == ord('s'): # 等待s键保存并退出
cv.imwrite('messigray.png', img)
cv.destroyAllWindows()
参考
https://docs.opencv.org/3.4.2/dc/d2e/tutorial_py_image_display.html.