繁体   English   中英

如何使用 python 将视频裁剪成等份

[英]How to crop a video into equal parts with python

我正在构建一个 python 应用程序,它需要根据给定的网格裁剪各个部分的视频。 裁剪视频的最佳库是什么?

示例:上传视频并将其拆分为 2x2 网格。

在此处输入图像描述

不完全优雅,但那样就可以了。
只是使用 open-cv 将框架切割成类似框架的网格的一种非常天真的方法。 伪代码:对于每一帧,按网格拆分帧并将“块”保存到列表中。 当你完成为每个列表创建一个 mp4(你可以尝试 cv2.VideoWriter_fourcc 或上面建议的 ffmpeg)。

import wizzi_utils as wu # pip install wizzi_utils
import cv2


def main():
    video_path = './wizzi_utils_playground/videos/Input/woman_yoga.mp4'
    cap = cv2.VideoCapture(video_path)
    if cap.isOpened():
        out_dims = wu.cvt.get_dims_from_cap(cap)
        w, h = out_dims
        total_frames = wu.cvt.get_frames_from_cap(cap)
        print('video {}: frames={}, dims={}'.format(video_path.split('/')[-1], total_frames, out_dims))
        for i in range(total_frames):
            success, frame = cap.read()
            wu.cvt.display_open_cv_image(frame, ms=1, title='origFrame({})'.format(frame.shape), loc='top_left')

            # let assume 2x2 grid - you need to write a function that does this in a loop
            chunk_1 = frame[0:int(h / 2), 0:int(w / 2), :]
            wu.cvt.display_open_cv_image(chunk_1, ms=1, title='chunk_1({})'.format(chunk_1.shape), loc=(0, 400))

            chunk_2 = frame[0:int(h / 2), int(w / 2):w, :]
            wu.cvt.display_open_cv_image(chunk_2, ms=1, title='chunk_2({})'.format(chunk_2.shape), loc=(330, 400))

            chunk_3 = frame[int(h / 2):h, 0:int(w / 2), :]
            wu.cvt.display_open_cv_image(chunk_3, ms=1, title='chunk_3({})'.format(chunk_3.shape), loc=(0, 620))

            chunk_4 = frame[int(h / 2):h, int(w / 2):w, :]
            wu.cvt.display_open_cv_image(chunk_4, ms=0, title='chunk_4({})'.format(chunk_4.shape), loc=(330, 620))

            # save each chunk in a different list - finish with 4 lists
            break  # just the first frame for this example

        # create a video from each list
    return


if __name__ == '__main__':
    main()

请在此处查看代码的附加图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM