python如何實(shí)現(xiàn)從視頻中提取每秒圖片
我是在做行人檢測(cè)中需要將一段視頻變?yōu)閳D片數(shù)據(jù)集,然后想將視頻每秒鐘的圖片提取出來。
- 語言:python
- 所需要的庫(kù):cv2,numpy (自行安裝)
opencv中提供了讀取視頻每幀圖片的函數(shù),下面的代碼可以將視頻的每幀圖片提取出來。注:我的視頻名字叫 2.mp4 ,提取圖片保存目錄 需要自己建一個(gè)名字叫 output 的文件夾。
# 導(dǎo)入所需要的庫(kù) import cv2 import numpy as np # 定義保存圖片函數(shù) # image:要保存的圖片名字 # addr;圖片地址與相片名字的前部分 # num: 相片,名字的后綴。int 類型 def save_image(image,addr,num): address = addr + str(num)+ '.jpg' cv2.imwrite(address,image) # 讀取視頻文件 videoCapture = cv2.VideoCapture("2.mp4") # 通過攝像頭的方式 # videoCapture=cv2.VideoCapture(1) #讀幀 success, frame = videoCapture.read() i = 0 while success : i = i + 1 save_image(frame,'./output/image',m) if success: print('save image:',i) success, frame = videoCapture.read()
現(xiàn)在我想按秒提取,只要我們能知道視頻每秒有多少幀,然后在上面的代碼基礎(chǔ)上每隔那么多幀提取一次就行了,這就需要查看視頻的幀率。一般情況下隨便用一個(gè)播放器打開視頻后右鍵查看其屬性就可以看到幀率?,F(xiàn)在我的視頻幀率為12 ,每隔12幀提取一次就可以得到每秒的圖片。代碼如下:
# 導(dǎo)入所需要的庫(kù) import cv2 import numpy as np # 定義保存圖片函數(shù) # image:要保存的圖片名字 # addr;圖片地址與相片名字的前部分 # num: 相片,名字的后綴。int 類型 def save_image(image,addr,num): address = addr + str(num)+ '.jpg' cv2.imwrite(address,image) # 讀取視頻文件 videoCapture = cv2.VideoCapture("2.mp4") # 通過攝像頭的方式 # videoCapture=cv2.VideoCapture(1) #讀幀 success, frame = videoCapture.read() i = 0 timeF = 12 j=0 while success : i = i + 1 if (i % timeF == 0): j = j + 1 save_image(frame,'./output/image',j) print('save image:',i) success, frame = videoCapture.read()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python dataframe向下向上填充,fillna和ffill的方法
今天小編就為大家分享一篇python dataframe向下向上填充,fillna和ffill的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11基于Python實(shí)現(xiàn)復(fù)刻人生重開模擬器
人生重開模擬器是由VickScarlet上傳至GitHub的一款簡(jiǎn)單的文字網(wǎng)頁(yè)游戲。本文將用Python復(fù)刻一下這個(gè)游戲,感興趣的小伙伴可以嘗試一下2022-10-10Python使用Matplotlib繪制三維散點(diǎn)圖詳解流程
matplotlib是基建立在python之上,適用于創(chuàng)建靜態(tài),動(dòng)畫和交互式可視化,通常與數(shù)據(jù)分析模塊pandas搭配使用,用于數(shù)據(jù)的分析和展示,適用于主流的操作系統(tǒng),如Linux、Win、Mac2022-11-11python3圖片轉(zhuǎn)換二進(jìn)制存入mysql
MYSQL是支持把圖片存入數(shù)據(jù)庫(kù)的,也相應(yīng)的有一個(gè)專門的字段BLOB (Binary Large Object),即較大的二進(jìn)制對(duì)象字段,看下面代碼2013-12-12