同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。
透过 OpenCV 的介面,显示镜头 ( webcam ) 所拍摄到的视频。
首先我们要先安装 Python 版的 OpenCV
程式的一开始先透过 cv2.VideoCapture 指定摄像头,笔记本上 0 通常代表内建的摄像头,1 是外接的。
透过 set() 可以设定拍摄的一些基本参数,如长、宽、帧数 ( Frames ) 等等。
set 有两个参数,第一个是要设定的项目,第二个是该项目要设定的参数。
本只代码仅使用了 3 个,如下表所示,其他更多参数请参考文件档 。
参数 | 参数代码 | 本代码使用的参数 |
---|---|---|
cv.CAP_PROP_FRAME_WIDTH | 3 | 160 |
cv.CAP_PROP_FRAME_HEIGHT | 4 | 120 |
cv.CAP_PROP_FPS | 5 | 30 |
isOpened() 可以检测摄像头是否正常打开,如果没有成功打开就结束程序。
透过 while 回圈,不断的读取图像,以产生串流的感觉 ( 把 while 回圈拿掉可以变成单纯的图像拍摄 ) , 透过 waitKey() 可以终止串流。
read() 会读取一张图像,ret 代表是否取得成功,frame 为取得的图像。
imshow() 可以显示图像,第一个参数为视窗的名子,第二个参数为图像。
( 注意 : 只要使用 imshow 后面一定要有 waitKey() 才能正确显示,可以参考下方连结 )
结束时也记得把摄像头、刚刚建立的视窗释放掉。
import cv2
cap = cv2.VideoCapture(0)
cap.set(3,160)
cap.set(4,120)
cap.set(cv2.CAP_PROP_FPS, 30)
if not cap.isOpened():
print("Can't open camera !")
exit()
while(True):
ret, frame = cap.read()
if not ret:
print("Can't receive frame")
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
结果如下所示