python如何實現(xiàn)從視頻中提取每秒圖片
我是在做行人檢測中需要將一段視頻變?yōu)閳D片數(shù)據(jù)集,然后想將視頻每秒鐘的圖片提取出來。
- 語言:python
- 所需要的庫:cv2,numpy (自行安裝)
opencv中提供了讀取視頻每幀圖片的函數(shù),下面的代碼可以將視頻的每幀圖片提取出來。注:我的視頻名字叫 2.mp4 ,提取圖片保存目錄 需要自己建一個名字叫 output 的文件夾。
# 導(dǎo)入所需要的庫
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ǔ)上每隔那么多幀提取一次就行了,這就需要查看視頻的幀率。一般情況下隨便用一個播放器打開視頻后右鍵查看其屬性就可以看到幀率?,F(xiàn)在我的視頻幀率為12 ,每隔12幀提取一次就可以得到每秒的圖片。代碼如下:
# 導(dǎo)入所需要的庫
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()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python dataframe向下向上填充,fillna和ffill的方法
今天小編就為大家分享一篇python dataframe向下向上填充,fillna和ffill的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python3圖片轉(zhuǎn)換二進(jìn)制存入mysql
MYSQL是支持把圖片存入數(shù)據(jù)庫的,也相應(yīng)的有一個專門的字段BLOB (Binary Large Object),即較大的二進(jìn)制對象字段,看下面代碼2013-12-12

