美文网首页
Python cv2 摄像头获取与视频保存

Python cv2 摄像头获取与视频保存

作者: 一个三要不起 | 来源:发表于2018-05-13 16:21 被阅读0次

一、 使用摄像头捕获视频并显示

import cv2

cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows() 
  • opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,有多个摄像头的情况下参数换1、2、3……试试
  • 在while循环中,利用摄像头对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。
  • 调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。

二、视频保存

视频保存可以用cv2.VideoWriter这个函数,需要参数有视频名, 格式, 码率(fps), 帧的尺寸等参数
可以这么调用:

fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), \
        int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

out = cv2.VideoWriter('camera_test.avi', fourcc, fps, size)
...
# 写入一帧
out.write(frame)

网上有人说fourcc参数填-1,我试了,发现并没有用
fps那个参数之在读取视频再保存的时候用,保存摄像头拍摄到的视频就要填要保存视频的帧数

三、完整代码

import cv2

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('camera_test.avi', fourcc,10.0, size)
while True:
    ret, frame = cap.read()
    # 横向翻转
    frame = cv2.flip(frame, 1)
    out.write(frame)
    # 在图像上显示 Press Q to save and quit
    cv2.putText(frame,
                "Press Q to save and quit",
                (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
                (0, 255, 0), 2)
    cv2.imshow('frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
out.release()
cv2.destroyAllWindows()

参考:
https://blog.csdn.net/huanglu_thu13/article/details/52337013
https://blog.csdn.net/qq_38003892/article/details/79304139
https://blog.csdn.net/fanzy1234/article/details/78582204

相关文章

网友评论

      本文标题:Python cv2 摄像头获取与视频保存

      本文链接:https://www.haomeiwen.com/subject/ebiprftx.html