1.代码注释:
#!/usr/bin/python3
import cv2 as cv
# 实例化摄像头对象
# 参数0表示默认为设备内置第一个摄像头
# 如果需要读取已有的视频则参数改为视频所在路径
cap = cv.VideoCapture(0)
# cap = cv.VideoCapture("test.mp4")
# 判断视频对象是否成功读取,成功读取视频对象返回True,否则返回False
flag = cap.isOpened()
print(flag)
while 1:
# 按帧读取视频,返回值ret是布尔型,正确读取则返回True,读取失败或读取视频结尾则会返回False
# frame为每一帧的图像数据,这里图像是三维矩阵,即frame.shape = (640, 480, 3),读取的图像为BGR格式
ret, frame = cap.read()
# 新建一个名为test_window的窗口,显示每一帧图像
cv.imshow("test_window", frame)
# 阻塞等待键盘响应10ms,如果输入q则退出
exit_key = cv.waitKey(10)
if exit_key == ord('q'):
break
# 如果下次再建立相同的实例cap = cv.VideoCapture(0)时,没有调用cap.release()释放相机设备资源
# 那么它将引发诸如Device or resource busy之类的错误,从而引发OpenCV异常。
# 所以每次程序结束保险起见,都要调用cap.release()释放硬件资源
cap.release()
# 关闭所有窗口
cv.destroyAllWindows()
2.运行结果: