使用Opencv的python接口简单读取并显示图片
程序员文章站
2022-03-20 14:52:51
...
读取图片并显示
#-*-coding:utf-8-*-
import cv2
img_path = "./cat.59.jpg"
img = cv2.imread(img_path)
cv2.namedWindow("Cat")
cv2.imshow("Cat",img) # 只使用imshow的时候,在IDLE窗口不会显示出图片。需要其后面接cv2.waitKey()配合使用。
aa = cv2.waitKey(1000) # 显示1s,然后关闭显示。
print aa ## 按下q,返回值113(q对应的ASCII码)
cv2.destroyAllWindows() ## 关闭之前打开的窗口
opencv读取的图片格式为numpy.ndarray,shape为( H x W x C)。像素值取值范围为[0,255]
上面程序用到了几个函数,不了解的话可以查看API手册,函数说明如下:
int cv::waitKey( int delay=0)
当delay≤0时,函数会卡在这里,直到一个按键按下。且函数返回按键对应的ascii字符值,且关闭之前打开的图片显示窗口。
当delay>0时,函数会在delay值对应的ms时间内接收一个按键值,然后返回按键对应的ascii字符值,若这段时间内无按键按下,则返回-1值。
void cv::namedWindow( const String & winname,int flags = WINDOW_AUTOSIZE )
namedWindow为图片创建一个占位符(placeholder),用来显示图像。默认显示原始大小的图像。
你可以调用cv2.destroyWindow()或cv2.destroyAllWindows()来关闭窗口并取消任何关联的内存使用。 对于一个简单的程序,您并不需要调用这些函数,因为应用程序的所有资源和窗口在退出时都会被操作系统自动关闭。
void cv::imshow( const String & winname,InputArray mat )
在给定的窗口下显示图片。winname为窗口对应的字符串。默认显示原始大小的图像。
关于imshow的注意:
**只使用imshow的时候,在IDLE窗口不会显示出图片。需要其后面接cv2.waitKey()配合使用。**
此外,在ipython下,运行上面的程序会出问题,而将上面的代码保存为py文件,在python xx.py运行则没问题。
另外,还可以利用waitKey()函数来识别按键,实现一个功能:当检测到某个指定的按键按下的时候,关闭显示,比如说这个按键为’q’。
#-*-coding:utf-8-*-
import cv2
img_path = "./cat.59.jpg"
img = cv2.imread(img_path)
cv2.namedWindow("Cat")
while True:
cv2.imshow("Cat",img)
if cv2.waitKey(1) & 0xFF == ord('q'):
print("Done!")
break
cv2.destroyAllWindows()
- 其中,cv2.waitKey(1) & 0xFF的作用是取返回值的最后一个字节。
- ord(‘q’)为字符q对应的整数值。
推荐阅读
-
Pytorch使用PIL的读取单张图片并显示
-
python解决OpenCV在读取显示图片的时候闪退的问题
-
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
-
在使用opencv中的imread和imshow语句读取图片时,无法正确显示出来
-
Pytorch使用PIL的读取单张图片并显示
-
python使用opencv读取图片的实例详解
-
使用python读取txt中的数字,并根据数字从别的文件夹选取图片保存在别的文件夹中
-
python实现读取并显示图片的两种方法
-
python使用opencv读取图片的实例详解
-
opencv函数提取图片的sift特征并显示(python)