此文介紹如何讀取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_F5,只能擷取出26張,並將擷取出之影像透過OpenCV進行顯示。

arrow
arrow

    水面上的小草 發表在 痞客邦 留言(0) 人氣()