閒着沒事想要自己用Python給視頻添加一些特效,有時候就需要提取每一幀,或是提取一部分圖像進行操作。
沒有cv2的話,命令行裝一個cv2
pip install cv2
什麼,沒裝python?
** 進入正題 **
先把要用的庫準備好
import cv2
import os.path as op
import os
提取圖像關os什麼事?
當然是要對路徑什麼的進行操作
video = cv2.VideoCapture(video_path)
-
然後先讀取一張(success 爲成功與否,frame爲提取的圖像數據)
success, frame = video.read()
-
然後開始循環(先存取上一次讀取的圖像,然後接着再讀一張)
img_id = 0
while success:
img_outpath = f'...../..../../{img_id}.png'
img_id += 1
cv2.imwrite(img_outpath, frame)
success, frame = video.read()
img_id = 0
while success:
img_outpath = f'...../..../../{img_id}.png'
if not img_id%5:
img_id += 1
cv2.imwrite(img_outpath, frame)
success, frame = video.read()
稍微整理整理,就可以弄成一個小函數,使用起來調用一波就好
def split_video(video_path, out_path):
if not op.exists(out_path):
os.mkdir(out_path)
vc = cv2.VideoCapture(video_path)
success, frame = vc.read()
i = 0
while success:
i += 1
img_path = f'{out_path}\\{i}.jpg'
cv2.imwrite(img_path, frame)
if success:
print(f'\r Split image{i}', end='')
success, frame = vc.read()
提取了圖像,就可以進行一系列操作了,比如:
又比如AI換臉
無意冒犯,只是順手搜的素材,沒有惡意,只是作技術交流。