您好,登錄后才能下訂單哦!
我是在做行人檢測中需要將一段視頻變為圖片數據集,然后想將視頻每秒鐘的圖片提取出來。
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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。