Python Opencv 之 简单的视频裁剪功能的实现

Python Opencv 之 简单的视频裁剪功能的实现

 

目录

Python Opencv 之 简单的视频裁剪功能的实现

一、简单介绍

二、实现原理

三、注意实现

四、效果预览

五、实现步骤

这里实现截取视频的左半部分为例

六、关键代码

七、python 推荐可以使用 Moviepy 对比一下


一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。
本节介绍,通过使用 opencv 和 tesseract 进行简单的文字识别。
 

二、实现原理

1、读取视频

2、size 设置视频的裁剪大小

3、创建 VideoWriter ,写入 指定区域的视频数据

 

三、注意实现

1、注意 size 设置和 frame[0:x, 0:y] 要有一致性,不然可能显示、保存不了视频

2、frame 设置,导致这个方法好像有局限性

3、使用 python 3.6.7,opencv-python 为 4.2.0.32

 

四、效果预览

 

五、实现步骤

这里实现截取视频的左半部分为例

1、打开 Pycharm,新建一个工程

 

2、这里是选择 python 3.6,安装 opencv ,创建的工程

 

3、选中工程名称,右键创建一个 python 脚本

 

4、编写脚本,实现读取指定视频,进行半屏裁剪,并保存

 

5、运行脚本,效果如上图

 

六、关键代码

import cv2 as cv


def main():
    # 导入视频文件,参数:0 自带摄像头,1 USB摄像头,为文件名时读取视频文件
    video_caputre = cv.VideoCapture(r"D:\CloudMusic\MV\排骨教主 - 入画.mp4")

    # 获取读入视频的参数
    fps = video_caputre.get(cv.CAP_PROP_FPS)
    width = video_caputre.get(cv.CAP_PROP_FRAME_WIDTH)
    height = video_caputre.get(cv.CAP_PROP_FRAME_HEIGHT)

    print("fps:", fps)
    print("width:", width)
    print("height:", height)

    # 定义截取尺寸,后面定义的每帧的h和w要于此一致,否则视频无法播放
    # 注意 这里是高宽 (height, width)
    size = (int(height), int(width / 2))

    # 创建视频写入对象
    videp_write = cv.VideoWriter("videoFrameTarget.avi", cv.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, size)

    # 读取视频帧,然后写入文件并在窗口显示
    success, frame_src = video_caputre.read()
    while success and not cv.waitKey(1) == 27: #读完退出或者按下 esc 退出

        # [width, height] 要与上面定义的size参数一致,注意参数的位置
        frame_target = frame_src[0:int(width/2), 0:int(height)]
        # 写入视频文件
        videp_write.write(frame_target)

        # 显示裁剪的视频和原视频
        cv.imshow("video", frame_target)
        cv.imshow("Video_src", frame_src)

        # 不断读取
        success, frame_src = video_caputre.read()

    print("视频裁剪完成")

    # 销毁窗口,释放资源
    cv.destroyWindow("video")
    cv.destroyWindow("Video_src")
    video_caputre.release()


if __name__=="__main__":
    main()

 

七、python 推荐可以使用 Moviepy 对比一下

猜你喜欢

转载自blog.csdn.net/u014361280/article/details/106157012#comments_22013112
今日推荐