Python提取視頻幀圖片實(shí)例代碼
為了從視頻中提取每一幀圖片,編寫Python腳本實(shí)現(xiàn)該功能
video_path為指定的視頻路徑
interval為指定分割視頻是是否跳幀,默認(rèn)不跳幀,即全部分割
width, height 為指定對(duì)分割幀圖片調(diào)整大小,默認(rèn)不調(diào)整
該腳本自動(dòng)對(duì)幀圖片編號(hào),設(shè)置為7位編碼,最多可分割9999999幀圖片,即92小時(shí)的30FPS視頻
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ============================================================
# @Date : 2021/12/08 14:40:31
# @Author : LiShan
# @Email : lishan@st.xatu.edu.com
# @File : extract.py
# @IDE : PyCharm
# @Func : Extract video image
# ============================================================
import os.path
import time
import cv2
video_path = "./assets/intersection.mp4"
idx1 = video_path.rfind('/')
idx2 = video_path.rfind('.')
save_path = "./assets/" + video_path[idx1+1:idx2]
if os.path.exists(save_path):
pass
else:
os.mkdir(save_path)
cap = cv2.VideoCapture(video_path)
fps = int(cap.get(cv2.CAP_PROP_FPS))
print('FPS:{:.2f}'.format(fps))
rate = cap.get(5)
frame_num = cap.get(7)
duration = frame_num/rate
print('video total time:{:.2f}s'.format(duration))
# width, height = 1920, 1080
cnt = 0
num = 0
# interval = int(fps) * 4
interval = 1
process_num = frame_num // interval
print('process frame:{:.0f}'.format(process_num))
t0 = time.time()
while cap.isOpened():
ret, frame = cap.read()
if ret:
cnt += 1
if cnt % interval == 0:
num += 1
# frame = cv.resize(frame, (width, height))
cv2.imwrite(save_path + "/%07d.jpg" % num, frame)
remain_frame = process_num - num
t1 = time.time() - t0
t0 = time.time()
print("Processing %07d.jpg, remain frame: %d, remain time: %.2fs" % (num, remain_frame, remain_frame * t1))
else:
break
if cv2.waitKey(1) & 0xff == 27:
break
cap.release()
cv2.destroyAllWindows()
print("done")

到此這篇關(guān)于Python提取視頻幀圖片實(shí)例代碼的文章就介紹到這了,更多相關(guān)Python提取視頻幀圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何實(shí)現(xiàn)MySQL實(shí)例初始化詳解
這篇文章主要給大家介紹了關(guān)于Python如何實(shí)現(xiàn)MySQL實(shí)例初始化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
python-圖片流傳輸?shù)乃悸芳笆纠?url轉(zhuǎn)換二維碼)
這篇文章主要介紹了python-圖片流傳輸?shù)乃悸芳笆纠?url轉(zhuǎn)換二維碼),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
Python如何統(tǒng)計(jì)函數(shù)調(diào)用的耗時(shí)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)統(tǒng)計(jì)函數(shù)調(diào)用的耗時(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
python3.10及以上版本編譯安裝ssl模塊的詳細(xì)過程
最近搞安裝ssl模塊每天都弄到很晚,所以這里給大家整理下,這篇文章主要給大家介紹了關(guān)于python3.10及以上版本編譯安裝ssl模塊的詳細(xì)過程,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Python進(jìn)程間通信Queue實(shí)例解析
這篇文章主要介紹了Python進(jìn)程間通信Queue實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Tornado Web服務(wù)器多進(jìn)程啟動(dòng)的2個(gè)方法
這篇文章主要介紹了Tornado Web服務(wù)器多進(jìn)程啟動(dòng)的2個(gè)方法,Tornado是一個(gè)用Ptyhon寫的WEB服務(wù)器,需要的朋友可以參考下2014-08-08

