赞
踩
cv2.VideoCapture 是 OpenCV(cv2)库中的一个类,用于捕获摄像头视频或读取视频文件。以下是 cv2.VideoCapture 的详细用法:
连接摄像头或读取视频文件
创建 VideoCapture 对象:使用 cv2.VideoCapture() 函数创建一个 VideoCapture 对象。如果参数是 0 或其他非负整数,则表示打开计算机的摄像头,其中 0 通常表示默认摄像头。如果参数是视频文件的路径,则打开该视频文件。
import cv2
# 打开默认摄像头
cap = cv2.VideoCapture(0)
# 或者打开视频文件
cap = cv2.VideoCapture('path_to_video_file.mp4')
按帧读取视频
读取帧:使用 read() 方法从 VideoCapture 对象中读取帧。该方法返回两个值:一个布尔值(表示是否成功读取帧)和一个帧对象(如果成功读取)。
ret, frame = cap.read()
# 如果 ret 为 True,表示成功读取帧
if ret:
# 在这里处理帧,例如显示帧
cv2.imshow('Frame', frame)
等待键盘输入
等待键盘输入:使用 waitKey() 方法等待用户输入。该方法接受一个参数,表示等待的毫秒数。在等待期间,程序将继续显示当前帧。
# 等待 1ms,然后切换到下一帧
cv2.waitKey(1)
释放摄像头
释放 VideoCapture 对象:在完成视频捕获后,应使用 release() 方法释放 VideoCapture 对象,以释放资源。
cap.release()
关闭所有窗口
关闭所有窗口:使用 destroyAllWindows() 方法关闭所有由 OpenCV 创建的窗口。
cv2.destroyAllWindows()
完整示例
下面是一个完整的示例代码,演示了如何使用 cv2.VideoCapture 捕获摄像头视频并显示:
import cv2 # 创建 VideoCapture 对象 cap = cv2.VideoCapture(0) # 检查是否成功打开摄像头 if not cap.isOpened(): print("Error: Couldn't open the camera.") exit() # 循环读取帧并显示 while True: # 读取帧 ret, frame = cap.read() # 如果成功读取帧 if ret: # 显示帧 cv2.imshow('Camera Feed', frame) # 等待 1ms,然后切换到下一帧 if cv2.waitKey(1) & 0xFF == ord('q'): break else: print("Failed to grab frame") break # 释放摄像头并关闭所有窗口 cap.release() cv2.destroyAllWindows()
在这个示例中,程序将打开默认摄像头,并在窗口中显示实时视频流。当用户按下 “q” 键时,程序将退出循环并释放资源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。