OpenCV开发教程之视频和摄像头的相关操作

30人浏览 / 0人评论 / 添加收藏

通过OpenCV我们可以对视频文件和摄像头进行相关操作,包括对视频的读取和播放,摄像头的开启显示和摄像头录制等等。今天小编就用代码实例来简单讲一讲。

1、视频文件的读取和播放

#读取视频文件
import cv2

# 读取视频文件
capture = cv2.VideoCapture('./video/intro.mp4')
while capture.isOpened():
   ret, frame = capture.read()
   if not ret:
       break
   cv2.imshow("frame", frame)
   if cv2.waitKey(1000//30) & 0xFF == ord('q'):
       break
capture.release()
cv2.destroyAllWindows()

2、开启摄像头显示

#读取摄像头视频
import cv2

# 创建 VideoCapture 对象,读取摄像头视频
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
   print("Error: Could not open camera.")
   exit()
# 读取视频帧
while True:
   ret, frame = cap.read()
   # 如果读取到最后一帧,退出循环
   if not ret:
       break
   # 显示当前帧
   cv2.imshow('Camera', frame)
   # 按下 'q' 键退出
   if cv2.waitKey(25) & 0xFF == ord('q'):
       break
# 释放资源
cap.release()
cv2.destroyAllWindows()

3、录制视频

#开启摄像头并录制视频
import cv2
cap = cv2.VideoCapture(0)
# 关键:自动获取摄像头真实分辨率,不能手动写死 640x480,否则会无法保存视频
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
size = (width, height)
print('size:', size)
# 视频编码 + 写入配置
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter("./video/output.mp4", fourcc, 20.0, size)

while cap.isOpened():
   ret, frame = cap.read()
   if not ret:
       break
   # 显示并写入视频
   out.write(frame)
   cv2.imshow("Recording", frame)
   if cv2.waitKey(1) == ord('q'):
       break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

全部评论