Python 抽取剔除视频帧工具

前言

正好有人问我怎么把视频某几帧去掉,正好有时间,正好写了,正好发出来。

大家想用的话可以拿去参考。

代码

下面是我使用opencv对视频中间几帧抽取的方法。

主要的思路是在读取frame的时候,顺便把帧写下来。

同时如果不是需要抽取剔除的帧,直接continue到下个循环。

样例代码如下,主要按照MP4格式进行处理。

#!/user/bin/env python
# coding=utf-8
"""
@project : csdn-pro
@author  : 剑客阿良_ALiang
@file   : test.py
@ide    : PyCharm
@time   : 2022-06-30 17:55:48
"""

import cv2


# 视频抽帧
def extract_frame(video_path: str, result_path: str, fps, weight, height, start, end):
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    videoWriter = cv2.VideoWriter(result_path, fourcc, fps, (weight, height))
    vc = cv2.VideoCapture(video_path)
    if vc.isOpened():
        ret, frame = vc.read()
    else:
        ret = False
    count = 0  # count the number of pictures
    while ret:
        ret, frame = vc.read()
        if start <= count <= end:
            count += 1
            continue
        else:
            videoWriter.write(frame)
            count += 1
    print(count)
    videoWriter.release()
    vc.release()


if __name__ == '__main__':
    extract_frame('C:\\Users\\xxx\\Desktop\\123.mp4', 'C:\\Users\\xxx\\Desktop\\114.mp4', 25, 640, 368, 119, 125)

注意

1、extract_frame方法的入参分别为:输入视频地址、输出视频地址、视频fps、视频分辨率宽、视频分辨率高、视频需要抽掉的起始帧、视频需要抽掉的结束帧。

小结

就不验证效果了,大家可以自己试试看。

注意地址要写错了,导致输出为空。

最近我的心态有些变化,以前我总是觉着所处在的地方,规则是如此混乱不堪,人的惰性和逃避在事情面前那样肉眼可见。我讨厌它,甚至有些排斥和想要破坏它。但突然我站在镜子面前,发现我也成为了它的一部分,一种恶心感柔然二生。学会和自己先和解,在试着改变能改变的,我想这是我要做的。

 

猜你喜欢

转载自blog.csdn.net/zhiweihongyan1/article/details/125548310