正好有人問我怎麼把視頻某幾幀去掉,正好有時間,正好寫了,正好發出來。
大家想用的話可以拿去參考。
下面是我使用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、視頻分辨率寬、視頻分辨率高、視頻需要抽掉的起始幀、視頻需要抽掉的結束幀。
就不驗證效果了,大家可以自己試試看。
注意地址要寫錯了,導致輸出為空。
最近我的心態有些變化,以前我總是覺著所處在的地方,規則是如此混亂不堪,人的惰性和逃避在事情面前那樣肉眼可見。我討厭它,甚至有些排斥和想要破壞它。但突然我站在鏡子面前,發現我也成為了它的一部分,一種惡心感柔然二生。學會和自己先和解,在試著改變能改變的,我想這是我要做的。