OpenCv基于IPython的图像显示
简单的总结一下在使用OpenCV中遇到的问题。
OpenCV中显示图像的函数是cv2.imshow(para1, para2)。(para1是显示窗口的名字, para2是将要显示的图像)
在Ipython中并不能直接使用该函数。作者直接在IPython中使用后必报错。那么如何在IPython中通过OpenCV显示图像呢?
解决方法
同时使用cv2.waitKey()、 cv2.destroyAllWindows()函数。
通过与函数cv2.waitKey()、 cv2.destroyAllWindows()或者 cv2.destroyWindow() 联合使用才行。
此外,最好是一同使用IPython的Magic命令:%matplotlib
执行代码:
图片显示:在作者ubuntu 20.04 的笔记本上还会以下的命令信息:
该命令太长,但大多都是同一个意思。
虽然会有上面的那些命令信息,但不影响图片的显示。
延时显示
在上面的代码块中,IPython会在执行显示出图像之后立即关闭显示出来的图片,并不利于我们的观察。如何让图片能够停留一段时间从而有利于我们的观察呢?
- time
使用Python内置的time库。
import time
import cv2 as cv
image = cv.imread('image')
cv.imshow('image', image)
cv.waitKey(3)
time.sleep(5)
cv.destoryAllWindows()
2.交互式显示
使用input()函数
import time
import cv2 as cv
image = cv.imread('image')
cv.imshow('image', image)
cv.waitKey(3)
input("input any key to continue!")
cv.destoryAllWindows()
原理
cv2.waitKey():OpenCV的窗口函数和waitKey()函数是独立的,只有当waitKey()函数调用时,OpenCV的窗口才会上传图片。
cv2.destroyAllWindows():控制所有OpenCV产生的显示窗口。