• opencv-python教程学习系列3-视频操作


    前言

    opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍视频的获取和保存,坚持学习,共同进步。

    系列教程参照OpenCV-Python中文教程

    系统环境

    系统:win_x64;

    python版本:python3.5.2;

    opencv版本:opencv3.3.1;

    内容安排

    1.知识点介绍;

    2.测试代码;

    具体内容

    1.知识点介绍;

    1.1 使用摄像头捕获视频;

    1) cv2.VideoCapture() :0为默认计算机默认摄像头,1可以更换来源;

    2) 使用cap.isOpened()检查摄像头是否成功初始化,成功则返回值是True,否则就要使用cap.open();

    3)可以使用cap.get(propId)来获取视频的一些参数信息。propId可以是0到18之间的任何数字,每一个数字代表一个属性;

    4) 一些值可以使用cap.set(propId,value)来修改,例如cap.get(3)和cap.get(4)来查看每一帧的宽和高,默认是640x480。

    我们可以使用width=cap.set(3,320)和height= cap.set(4,240)来把宽和高改成320x240。

    1.2 从文件中播放视频;

    把设备索引号改成文件名即可。在播放每一帧时,使用cv2.waitKey()适当持续时间,一般可以设置25ms。

    cap=cv2.VideoCapture('filename.avi')#文件名及格式
    

    视频参数属性如下图所示,其中int propID表示需要更改的属性,double value表示给propID分配的数值:

    1.3 保存视频;

    创建一个VideoWriter的对象,确定输出文件名,指定FourCC编码,播放频率和帧的大小,最后是isColor标签True为彩色。FourCC是一个4字节码,用来确定视频的编码格式。设置FourCC格式时,采用了cv2.VideoWriter_fourcc()这个函数,若运行程序的时候显示这个函数不存在,可以改用cv2.cv.CV_FOURCC函数。

    2.测试代码;

    2.1 从摄像头或者文件中获取视频;

    import numpy as np
    import cv2
    cap = cv2.VideoCapture(0)#默认摄像头
    #cap=cv2.VideoCapture('filename.avi')#文件名及格式
    cap.isOpened()
    while(cap.isOpened()):
        #capture frame-by-frame
        ret , frame = cap.read()#ret表示是否成功读取视频帧
        if ret:
            #our operation on the frame come here
            gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)
        
            #display the resulting frame
            cv2.imshow('frame',gray)
            if cv2.waitKey(1) &0xFF ==ord('q'):  #按q键退出
        	    break
        else:
            break
    #when everything done , release the capture
    cap.release()
    cv2.destroyAllWindows()

    2.2 保存视频;

    import numpy as np
    import cv2
    
    cap = cv2.VideoCapture(0)
    # Define the codec and create VideoWriter object
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
    cv2.namedWindow('frame',cv2.WINDOW_NORMAL)
    
    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret==True:
            #frame = cv2.flip(frame,0)#上下翻转
    
            # write the flipped frame
            out.write(frame)
    
            cv2.imshow('frame',frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        else:
            break
    
    # Release everything if job is finished
    cap.release()
    out.release()
    cv2.destroyAllWindows()
    

    参考

    1.opencv-python教程视频操作

  • 相关阅读:
    Python 学习笔记(二)开发环境的搭建
    Python 学习笔记(一)Python 简介
    android.os.NetworkOnMainThreadException
    Android Call requires API level 11 (current min is 8)的解决方案
    Linux命令top 详解
    主流nosql数据库对比
    MongoDB的常用命令
    MongoDB添加用户验证
    MongoDB
    html介绍
  • 原文地址:https://www.cnblogs.com/happyamyhope/p/8110011.html
Copyright © 2020-2023  润新知