OpenCV提供了几个与显示图像有关的函数,下面将一一解说。
OpenCV可以使用 cv2.imshow( ) 将读取的图像对象显示在OpenCV窗口内,此函数的使用格式如下:
cv2.imshow(window_name, image)
window_name :要显示的窗口标题名称。
image :要显示的 图像对象 。
上述 imshow( ) 函数实际上是执行下列两个步骤:
(1)建立标题是window_name的窗口,所建立的窗口无法更改大小。
(2)将image图像对象在window_name窗口显示。
程序实例 ch1_2.py: 显示图像。
执行结果
如果要关闭上述图像窗口,可以单击右上方的 关闭按钮 。
将图像显示在OpenCV窗口后,若想关闭窗口,除了单击“关闭”按钮,还可以使用下列函数。
cv2.destroyWindow(window_name) # 删除单一所指定的窗口 cv2.destroyAllWindows( ) # 删除所有OpenCV的图像窗口
程序实例 ch1_3.py: 图像闪一下随即关闭的应用。
执行结果 图像闪一下随即关闭。
上述第5行代码显示图像,第6行代码关闭图像,所以造成图像闪一下随即关闭。
OpenCV的cv2.waitKey( )函数会等待按键事件,语法如下:
ret_key = cv2.waitKey(delay)
ret_key :返回值,如果在指定时间内没有按下键盘的键,则返回值是-1。如果按下键盘的键,则返回值是按键的ASCII码。常用于检测键盘按键,对应的ASCII码值如下:
Enter:13 Esc:27 Backspace:8 Space:32
delay :单位是毫秒,每1000毫秒等于1秒。
使用OpenCV显示图像时可以使用cv2.waitKey(delay)设定图像显示的时间,或是在显示时间内按键盘上的任意键,也可以让cv2.waitKey( )函数执行结束。 delay=0 或省略,代表无限期等待。delay=1000相当于等待1秒。
程序实例 ch1_4.py: 让图像持续显示,直到按下键盘上任意键。
执行结果 这个程序会持续显示jk.jpg,直到按下键盘上任意键。
程序实例 ch1_5.py: 让图像显示5秒或按键盘上任意键后列出waitKey( )函数的返回值。
执行结果 图像显示结果可以参考ch1_2.py。下方左图是等待5秒且没有按键发生的Python Shell窗口结果,下方右图是直接按键盘E键的结果。
注 :执行此程序时,需要设置系统为 英文输入 模式,如果输入是一般键盘键,可以使用ret_value == ord(key)判断是否按了特定的键盘字符。
程序实例 ch1_5_1.py: 让图像持续显示,直到按下键盘的 Q 键。
执行结果 这个程序会持续显示jk.jpg,直到按下 Q 键。
使用OpenCV的 imshow( ) 函数显示图像时,系统默认会建立一个图像窗口,所建立的图像窗口大小是固定的,无法更改。不过OpenCV也有提供 namedWindow( ) 函数建立未来要显示图像的窗口,它的语法如下:
cv2.namedWindow(window_name, flag)
window_name :未来要显示的窗口名称。
flag : 窗口旗标参数 ,可能值如下。
WINDOW_NORMAL :如果设定,用户可以自行调整窗口大小。
WINDOW_AUTOSIZE :系统将依图像调整窗口大小,用户无法调整窗口大小。
WINDOW_OPENGL :将以OpenGL支持方式打开窗口。
程序实例 ch1_6.py: 以彩色和灰度显示图像,其中彩色的OpenCV窗口无法调整窗口大小,灰度的OpenCV窗口可以调整窗口大小。同时分别使用1-4-2节所述的destroyWindow( )和destroyAllWindows( )函数关闭窗口。
执行结果 下列右边窗口可以重设大小。
上述程序第6行, cv2.IMREAD_GRAYSCALE 也可以用0代替,读者可以参考ch1_6_1.py,可以获得一样的结果。