關(guān)于視頻抽幀的一個(gè)Python小腳本
? ? ? 最近沉迷于Stable Diffusion,以前也沒(méi)真正系統(tǒng)學(xué)過(guò)Python,不過(guò)現(xiàn)在有了Chatgpt問(wèn)題迎刃而解感謝Ai帶來(lái)的便利,有愛(ài)自取。
import CV2
from PIL import Image
import numpy as np
cap = CV2.VideoCapture("D:/00/熱門(mén)音樂(lè).mp4") ?# 獲取視頻對(duì)象
isOpened = cap.isOpened ?# 判斷是否打開(kāi)
# 視頻信息獲取
fps = cap.get(CV2.CAP_PROP_FPS)
imageNum = 0
sum=0
timef=30
while (isOpened):
? ? sum+=1
? ? (frameState, frame) = cap.read() ?# 記錄每幀及獲取狀態(tài)
? ? if frameState == True and (sum % timef==0):
? ? ? ? # 格式轉(zhuǎn)變,BGRtoRGB
? ? ? ? frame = CV2.cvtColor(frame, CV2.COLOR_BGR2RGB)
? ? ? ? # 轉(zhuǎn)變成Image
? ? ? ? frame = Image.fromarray(np.uint8(frame))
? ? ? ? frame = np.array(frame)
? ? ? ? # RGBtoBGR滿(mǎn)足opencv顯示格式
? ? ? ? frame = CV2.cvtColor(frame, CV2.COLOR_RGB2BGR)
? ? ? ? imageNum = imageNum + 1
? ? ? ? fileName = 'D:/005/in/' + str(imageNum) + '.jpg' ?# 存儲(chǔ)路徑
? ? ? ? CV2.imwrite(fileName, frame, [CV2.IMWRITE_JPEG_QUALITY, 100])
? ? ? ? print(fileName + " successfully write in") ?# 輸出存儲(chǔ)狀態(tài)
? ? elif frameState == False:
? ? ? ? break
print('finish!')
cap.release()