我是在做行人檢測中需要將一段視頻變為圖片數據集,然后想將視頻每秒鐘的圖片提取出來。
- 語言:python
-
所需要的庫:cv2,numpy (自行安裝)
opencv中提供了讀取視頻每幀圖片的函數,下面的代碼可以將視頻的每幀圖片提取出來。注:我的視頻名字叫 2.mp4? ,提取圖片保存目錄 需要自己建一個名字叫 output 的文件夾。
# 導入所需要的庫 import cv2 import numpy as np # 定義保存圖片函數 # 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()
現在我想按秒提取,只要我們能知道視頻每秒有多少幀,然后在上面的代碼基礎上每隔那么多幀提取一次就行了,這就需要查看視頻的幀率。一般情況下隨便用一個播放器打開視頻后右鍵查看其屬性就可以看到幀率。現在我的視頻幀率為12?,每隔12幀提取一次就可以得到每秒的圖片。代碼如下:
# 導入所需要的庫 import cv2 import numpy as np # 定義保存圖片函數 # 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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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