此文介紹如何讀取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進行顯示。
文章標籤
全站熱搜