【计算机视觉(2)】

【计算机视觉(2)】

码农世界 2024-05-24 后端 59 次浏览 0个评论

基于Python的OpenCV基础入门——视频的处理

  • 视频
    • OpenCV视频处理操作:
      • 创建视频对象
      • 判断视频是否成功初始化
      • 读取视频帧
      • 获取视频特征
      • 设置视频参数
      • 声明编码器
      • 保存视频
      • 释放视频对象
      • 视频处理基本操作的代码实现:

        视频

        视频是由一系列连续的图像帧组成的。每一帧都是视频中的一张静止图像,它们以非常快的速度连续播放,给人一种连续运动的感觉。视频的帧率指的是每秒钟播放的帧数,常见的帧率有24帧/秒、30帧/秒和60帧/秒等。帧率越高,视频播放越流畅。视频的处理就是通过循环将视频流中的所有的帧进行处理

        OpenCV视频处理操作:

        创建视频对象

        cap = cv2.VideoCapture(value)

        参数:

        设备索引或者一个视频文件名。摄像头读取则是设备索引,0为默认摄像头;视频文件读取则为filename

        判断视频是否成功初始化

        ret = cap.isOpened()

        返回值:

        ret :bool类型,成功则为True,否则为False。

        读取视频帧

        ret, frame = video.read()

        返回值:

        ret:bool类型,判断是否读取到帧,成功为True,否则为False。

        frame:读取到的帧

        获取视频特征

        cap.get(propId)

        参数:

        propId : 0 到 18 之间的整数。每一个数代表视频的一个属性,在这里仅举几个常用的参数:

        int属性propld
        0视频文件的当前位置(毫秒)CV_CAP_PROP_POS_FRAMES
        1下一步要解码/捕获的帧的基于0的索引CV_CAP_PROP_POS_AVI_RATIO
        3视频流中帧的宽度CV_CAP_PROP_FRAME_HEIGHT
        4视频流中帧的高度CV_CAP_PROP_FPS
        5帧率CV_CAP_PROP_FOURCC

        设置视频参数

        cap.set(propId, value)

        参数:

        propId : 0 到 18 之间的整数

        value:设置的新值

        声明编码器

        fourcc = cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘V’ ) , FourCC 是用于指定视频解码器的 4 字节代码。

        参数说明
        ‘M’, ‘P’, ‘4’, ‘V’MPEG-4编码类型,文件扩展名为 .mp4
        ‘X’,‘2’,‘6’,‘4’MPEG-4编码类型,文件扩展名为.mp4
        ‘P’,‘I’,‘M’,‘I’MPEG-1编码类型,文件扩展名为.avi
        ‘X’, ‘V’, ‘I’, ‘D’MPEG-4编码类型,文件扩展名为.avi
        ‘I’, ‘4’, ‘2’, ‘0’YUV编码类型,文件扩展名为avi

        保存视频

        out = cv2.VideoWriter(filename,fourcc, fps, frameSize)

        参数:

        filename:视频保存的位置

        fourcc:指定视频编解码器的4字节代码

        fps:帧率

        frameSize:帧大小

        释放视频对象

        capture.release(),释放视频对象是必要的清理操作

        视频处理基本操作的代码实现:

        import cv2
        cap = cv2.VideoCapture('img/1.mp4')
        while(cap.isOpened()):
            ret, frame = cap.read()
            if ret == True:
                cv2.imshow('frame', frame)
                if cv2.waitKey(1) & 0xFF == ord('q'):
                    break
            else:
                break
        

        实现效果如下图:

        【计算机视觉(2)】

转载请注明来自码农世界,本文标题:《【计算机视觉(2)】》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,59人围观)参与讨论

还没有评论,来说两句吧...

Top