Python提取視頻幀圖片實例代碼
為了從視頻中提取每一幀圖片,編寫Python腳本實現(xiàn)該功能
video_path為指定的視頻路徑
interval為指定分割視頻是是否跳幀,默認(rèn)不跳幀,即全部分割
width, height 為指定對分割幀圖片調(diào)整大小,默認(rèn)不調(diào)整
該腳本自動對幀圖片編號,設(shè)置為7位編碼,最多可分割9999999幀圖片,即92小時的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提取視頻幀圖片實例代碼的文章就介紹到這了,更多相關(guān)Python提取視頻幀圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在python中用print()輸出多個格式化參數(shù)的方法
今天小編就為大家分享一篇在python中用print()輸出多個格式化參數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python 中l(wèi)ist ,set,dict的大規(guī)模查找效率對比詳解
這篇文章主要介紹了Python 中l(wèi)ist ,set,dict的大規(guī)模查找效率對比詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10使用Python實現(xiàn)全攝像頭拍照與鍵盤輸入監(jiān)聽功能
這篇文章主要介紹了使用Python實現(xiàn)全攝像頭拍照與鍵盤輸入監(jiān)聽功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08詳解pandas中利用DataFrame對象的.loc[]、.iloc[]方法抽取數(shù)據(jù)
這篇文章主要介紹了pandas中利用DataFrame對象的.loc[]、.iloc[]方法抽取數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12在Python中使用swapCase()方法轉(zhuǎn)換大小寫的教程
這篇文章主要介紹了在Python中使用swapCase()方法轉(zhuǎn)換大小寫的教程,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05