使用Opencv的python接口简单读取并显示图片

来源:互联网 发布:mysql 如何使用 编辑:程序博客网 时间:2024/06/05 08:17

读取图片并显示

#-*-coding:utf-8-*-import cv2img_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)

delay0时,函数会卡在这里,直到一个按键按下。且函数返回按键对应的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 cv2img_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!")        breakcv2.destroyAllWindows()
  1. 其中,cv2.waitKey(1) & 0xFF的作用是取返回值的最后一个字节。
  2. ord(‘q’)为字符q对应的整数值。
阅读全文
0 0