举个例子
import cv2 clicked =False def onMouse(event,x,y,flags,param): global clicked if event == cv2.EVENT_LBUTTONUP: clicked=True cameraCapture =cv2.VideoCapture(0) cv2.namedWindow("MyWindow",0) cv2.resizeWindow("MyWindow",640,480) cv2.setMouseCallback("MyWindow",onMouse) print "Showing camera feed.Click window or press any key to stop." success,frame=cameraCapture.read() while success and cv2.waitKey(1)==-1 and not clicked: cv2.imshow("MyWindow",frame) success,frame=cameraCapture.read() cv2.destroyWindow("MyWindow") cameraCapture.release()
一、namedWindow(const String,ing flag)
Flag=0,表示按原图尺寸显示
Flag=1,表示窗口可以自适应
二、waitKey()
waitKey()与waitKey(0)表示无线等待,针对视频流来说,cv2.waitKey(0)表示只显示当前帧图像,相当于暂停
waitKey(n)表示等待n毫秒关闭窗口,针对视频流来说,cv2.waitKey(1)表示延时1ms切换到下一帧
当等待时间内无任何操作,等待结束返回-1
如果等待时间内有输入字符那么返回该字符的ASCII值
e.g. while(waitKey(1)!='q'): 或者如上程序while waitKey(1)== -1:
针对第一个:waitKey(1)表示延迟一秒;while waitKey(1):表示一直延迟;while(waitKey(1)!='q'):表示一直延迟直到键入q时
针对第二个:前面同理;while waitKey(1)== -1:表示一直延迟,不键入字符。
三、VideoCapture()和read()
cameraCapture=cv2.VideoCapture(0)
success,frame = cameraCapture.read()
VideoCapture(0)表示打开笔记本内置摄像头,还可以VideoCapture("../test.avi")
read()函数表示按帧读取视频,success,frame是read()的两个返回值,success是布尔值——如果读取帧是正确的则返回True,如果文件读取到结尾则返回False,Frame表示的是每一帧的图像,是一个三维矩阵