![cover](https://img-blog.csdnimg.cn/direct/36bbb7ad045f4e81a91a476471f5e192.png)
opencv-python库 cv2逐帧读取视频cv2.VideoCapture()
创建 VideoCapture 对象:使用 cv2.VideoCapture() 函数创建一个 VideoCapture 对象。cv2.VideoCapture 是 OpenCV(cv2)库中的一个类,用于捕获摄像头视频或读取视频文件。该方法返回两个值:一个布尔值(表示是否成功读取帧)和一个帧对象(如果成功读取)。释放 VideoCapture 对象:在完成视频捕获后,应使用 release()
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” 键时,程序将退出循环并释放资源。
更多推荐
所有评论(0)