Open CV 除了可以读取、显示静态图片外 , 还可 以加载及播放动态影片, 以 及
读取内置或外接摄像头的图像信息 。 很多笔记本电脑都具有摄像头 , OpenCV 可通过
VideoC apture 方法来打开摄像头,语法为 :

其中 , n 为整数 , 内置摄像头为 0 , 若还有其他摄像头则 依次为 1 , 2, . . . 。 例 如,
打开内置摄像头井把摄像头变量保存至 cap 中 :

摄像头是否处于打开状态可通过 i s Opened 方法进行判断 ,其语法为:

若摄像头处于打开状态 ,则返回 True ; 反之则返回 False a
摄像头打开后,可通过 read 方法来读取摄像头图像信息 , 语法为:

例如,读取摄像头图像,布尔值存于 ret 变量,图像存于 img 中 :

获取用户键盘输入
摄像头获取的图像是动态图像,如何取得特定时间的静态图像呢?通过让用户
按下特定按键来抓取该时刻的静态图片。本章的第 1 节中我们提到过 Open CV 的
waitKey 方法可获取用户输入,这个方法同时还可获取按键的 ASCII 码值,语法为:

按键变量保存按键的 ASCII 码,取值范围为 0 ~ 255 。 例如: A 的 ASCII 码为
65 下面代码设置用户在 10 秒内需按键,并把所按键的 ASCII 码返回至 key 变量:

通过开启摄像头抓取动态图像信息
程序执行后会自动打开摄像头,用户按下 Z 键时抓取图像井保存。
import cv2
cv2.namedWindow("frame")
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, img = cap.read()
if ret == True:
cv2.imshow("frame", img)
k = cv2.waitKey(100)
if((k == ord("z"))or(k == ord("Z"))):
cv2.imwrite("E:\catch.jpg", img)
break
cap.release()
cv2.waitKey(0)
cv2.destroyWindow("frame")