此篇分為兩部分進行介紹,包含讀取攝影機影像,以及將攝影機影像透過按鈕不斷的儲存成Video


1.讀取攝影機影像

程式碼:

import cv2

_CAMERA_WIDTH = 640
_CAMERA_HEIGH = 480

video_name = 'video_' #儲存影片名稱
file_type = '.avi' #儲存影片副檔名

cap = cv2.VideoCapture(0)

# 設定擷取影像的尺寸大小
cap.set(cv2.CAP_PROP_FRAME_WIDTH, _CAMERA_WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, _CAMERA_HEIGH)

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow("windows", frame)
        cv2.waitKey(1)

執行以上程式碼即可開啟攝影機並顯示即時影像,若只有一台攝影機,則cv2.VideoCapture(0)裡面參數預設為0

2.將攝影機影像儲存成Video

程式碼:

import cv2

_CAMERA_WIDTH = 640  #攝影機擷取影像寬度
_CAMERA_HEIGH = 480  #攝影機擷取影像高度

video_name = 'video_' #儲存影片名稱
file_type = '.avi' #儲存影片副檔名

cap = cv2.VideoCapture(0)
# 設定擷取影像的尺寸大小
cap.set(cv2.CAP_PROP_FRAME_WIDTH, _CAMERA_WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, _CAMERA_HEIGH)

fourcc = cv2.VideoWriter_fourcc(*'XVID')
FPS = 20  #擷取影片頻率

write_flag = 0  #判斷是否為寫入模式
video_counter = 0  #計數儲存影片數量

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        if cv2.waitKey(10) & 0xFF == ord('r') and write_flag == 0: # 寫入影格
            write_flag = 1
            save_name = video_name + str(video_counter) + file_type
            out = cv2.VideoWriter(save_name, fourcc, FPS, (_CAMERA_WIDTH, _CAMERA_HEIGH))
            print('writing to ' + save_name)
        elif cv2.waitKey(10) & 0xFF == ord('t') and write_flag == 1: #關閉影片
            write_flag = 0
            video_counter = video_counter + 1
            print('finish')
        elif cv2.waitKey(10) & 0xFF == ord('s'): # 釋放所有資源
            cap.release()
            out.release()
            cv2.destroyAllWindows()
            break

        if (write_flag == 1):
            out.write(frame)
            
        cv2.imshow('frame',frame)
    else:
        break

執行以上的程式碼首先會開啟攝影機並不斷地顯示,當於螢幕內不斷的按r時會開始儲存影片(記得切換成英文輸入,且因為cv2.waitKey(10)有偵測時間,所以要多按幾次),成功開始寫入時會印出writing to video_x.avi,當影像擷取要結束時按壓t (與上面按r一樣要多按幾次),成功時則會於對話框顯示finish,要擷取第二段影片時與第一段的操作方式一樣,而新影片會以下圖所看到之編號進行儲存,當程式要結束時則按壓s,從下圖的儲存影片內容中可以看到,本次執行共儲存四段影片,且下圖中也可以於資料夾路徑內看到該四段影片已成功進行擷取。

儲存影片內容:

原始資料夾內容:

儲存影片後資料夾內容:


#讀取影片(video)並轉成影像(images)的方式: 

#URL: http://cvfiasd.pixnet.net/blog/post/270018236

arrow
arrow

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