我是在做行人檢測(cè)中需要將一段視頻變?yōu)閳D片數(shù)據(jù)集,然后想將視頻每秒鐘的圖片提取出來(lái)。
- 語(yǔ)言:python
-
所需要的庫(kù):cv2,numpy (自行安裝)
opencv中提供了讀取視頻每幀圖片的函數(shù),下面的代碼可以將視頻的每幀圖片提取出來(lái)。注:我的視頻名字叫 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") # 通過(guò)攝像頭的方式 # 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è)播放器打開(kāi)視頻后右鍵查看其屬性就可以看到幀率。現(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") # 通過(guò)攝像頭的方式 # 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í)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
