基于python的opencv的录像保存视频预览的操作

本文介绍基于python语言使用OpenCV提供的接口在树莓派上实现视频的预览和视频的保存(avi),以及使用OpenCV读取播放一个现有的视频文件,并将这个视频文件写道另一个文件中。


本文主要参考http://www.waveshare.net/study/article-903-1.html

1.摄像头的视屏预览并保存到本地。

1.1首先是设置摄像头:

capCamera = cv2.VideoCapture(0)//打开摄像头
capCamera.set(cv2.CAP_PROP_FRAME_WIDTH, 480)//设置视屏的宽高
capCamera.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)

1.2设置视屏的压缩格式,帧率,帧大小,以及视屏要保存的文件文件名

fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
fps = 30
framesize=(int(capCamera.get(cv2.CAP_PROP_FRAME_WIDTH)),int(capCamera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
outCamera = cv2.VideoWriter('outputCamera.avi', fourcc, fps, framesize)

1.3 while循环中一直判断camera是否处于打开状态

while(capCamera.isOpened()):

1.4返回值ret成功或者失败。frameCamera是读取到的帧数据

ret , frameCamera = capCamera.read()

1.5将读取到的帧数据frameCamera写入到文件中

outCamera.write(frameCamera)

1.6imshow在屏幕上显示帧数据

cv2.imshow('outputCamera', frameCamera)

1.7如果按下q键就退出while循环

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

1.8 释放申请到的camera内容

capCamera.release()

1.9正常关闭所有的绘图窗口

cv2.destroyAllWindows()

   

2.使用OpenCV读取一个本地的avi格式的视频数据

2.1打开一个本地的视频文件

  

  capVideo = cv2.VideoCapture('outputCamera.avi')

2.2获取这个文件的fourcc,也就是压缩格式
 

   fourcc = int(capVideo.get(cv2.CAP_PROP_FOURCC)) 
   print('fourcc=',fourcc)

2.3获取到这个视频的帧率

    fps = capVideo.get(cv2.CAP_PROP_FPS)
    print('fps=%d'%fps)

2.4获取到这个视频的高宽
   

frameSize=(int(capVideo.get(cv2.CAP_PROP_FRAME_WIDTH)),int(capVideo.get(cv2.CAP_PROP_FRAME_HEIGHT)))    
print('frameSize=', frameSize)

创建需要写入的视频文件

   

outVideo = cv2.VideoWriter("outputVideo", fourcc, fps, frameSize)

2.5while循环中一直判断视频是否一直处于打开状态

   

while(capVideo.isOpened()):

2.6读取到视频帧数据frameVideo,以及成功与否的返回ret

       

ret, frameVideo = capVideo.read()

2.7读取成功就将数据帧写入到文件以及显示出帧画面,否则退出
     

   if ret: 
           outVideo.write(frameVideo) 
           cv2.imshow('framvideo', frameVideo)   
   if cv2.waitKey(1) == ord('q'): 
           break

2.8释放写入文件的资源

    capVideo.release() 
   cv2.destroyAllWindows()

完整的代码如下:

 

def camera_save_to_local():

    #set for camera

    capCamera = cv2.VideoCapture(0)

    capCamera.set(cv2.CAP_PROP_FRAME_WIDTH, 480)

    capCamera.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)

   

    fourcc = cv2.VideoWriter_fourcc('M','J','P','G')

    print('fourcc %s' %fourcc)

    fps = 30

    print('fps:%d' %fps)

    framesize = (int(capCamera.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capCamera.get(cv2.CAP_PROP_FRAME_HEIGHT)))

    print(framesize)

 

    outCamera = cv2.VideoWriter('outputCamera.avi', fourcc, fps, framesize)

 

 

    while(capCamera.isOpened()):

        ret , frameCamera = capCamera.read()

        outCamera.write(frameCamera)

        cv2.imshow('outputCamera', frameCamera)

        if(cv2.waitKey(1) == ord('q')):

            break

 

    capCamera.release()

    cv2.destroyAllWindows()

 

def read_save_video():

    capVideo = cv2.VideoCapture('outputCamera.avi')

 

    fourcc = int(capVideo.get(cv2.CAP_PROP_FOURCC))

    print('fourcc=',fourcc)

    fps = capVideo.get(cv2.CAP_PROP_FPS)

    print('fps=%d'%fps)

    frameSize=(int(capVideo.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capVideo.get(cv2.CAP_PROP_FRAME_HEIGHT)))

    print('frameSize=', frameSize)

    outVideo = cv2.VideoWriter("outputVideo", fourcc, fps, frameSize)

    while(capVideo.isOpened()):

        ret, frameVideo = capVideo.read()

        if ret:

            outVideo.write(frameVideo)

            cv2.imshow('framvideo', frameVideo)

        if cv2.waitKey(1) == ord('q'):

            break

 

    capVideo.release()

    cv2.destroyAllWindows()

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值