此文介紹如何讀取Video檔案並擷取成圖片,首先,此範例將Video檔案透過自己設定的取樣時間進行圖片擷取,再將擷取之圖片透過OpenCV進行顯示,其中,程式碼中之time_F為取樣頻率,若time_F= 5,代表每5幀會進行一次擷取,因此time_F越小擷取張數越多。
程式碼:
import cv2
def get_images_from_video(video_name, time_F):
video_images = []
vc = cv2.VideoCapture(video_name)
c = 1
if vc.isOpened(): #判斷是否開啟影片
rval, video_frame = vc.read()
else:
rval = False
while rval: #擷取視頻至結束
rval, video_frame = vc.read()
if(c % time_F == 0): #每隔幾幀進行擷取
video_images.append(video_frame)
c = c + 1
vc.release()
return video_images
time_F = 5#time_F越小,取樣張數越多
video_name = 'v_Archery_g01_c01.avi' #影片名稱
video_images = get_images_from_video(video_name, time_F) #讀取影片並轉成圖片
for i in range(0, len(video_images)): #顯示出所有擷取之圖片
cv2.imshow('windows', video_images[i])
cv2.waitKey(100)
cv2.destroyAllWindows
結果圖:
從以上兩張圖可以看出,time_F為2,可以擷取出65張影像,而time_F為5,只能擷取出26張,並將擷取出之影像透過OpenCV進行顯示。
文章標籤
全站熱搜
