OpenCV 寫入影片

import cv2                                               # 匯入函式


video = cv2.VideoCapture('newuser.mp4')                  # 讀取影片檔攝影鏡頭

width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) // 2    # 取得影片寬度

height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) // 2  # 取得影片高度

fourcc = cv2.VideoWriter_fourcc(*'MJPG')                 # 設定輸出影片的格式為 MJPG

out = cv2.VideoWriter('output.mov', fourcc, video.get(cv2.CAP_PROP_FPS), (width,  height), isColor=False)  # 產生空的影片,並將FPS設定與原有影片相同

if not video.isOpened():                # 判斷影片是否正常開啟  

    print("Cannot open camera")

    exit()


while True:

    ret, frame = video.read()           # 讀取影片的每一個影格

    if not ret:

        print("Cannot receive frame")   # 如果讀取錯誤,印出訊息

        break


    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 將影片轉換成灰階

    frame = cv2.resize(gray, (width, height), interpolation=cv2.INTER_NEAREST) # 調整影片大小

    out.write(frame)    

    cv2.imshow('OpenCVTest', frame)     # 如果讀取成功,顯示該影格的畫面


    if cv2.waitKey(1) == ord('q'):      # 每一毫秒更新一次,直到按下 q 結束

        break


video.release()                         # 所有作業都完成後,釋放資源

out.release()                           # 釋放資源

cv2.destroyAllWindows()                 # 結束所有視窗

VideoWriter() 儲存影片

※語法參照

VideoWriter() 可以建立一個空的「影片檔」,將擷取到的影像圖片經過處理後,寫入空的影片檔案,完成後就會儲存成新為新的影片。

cv2.get() 取得的影片屬性

※語法參照

使用 '影片變數'.get() 方法可以取得影片的屬性,利用影片屬性可以減少在儲存影片的錯誤

屬性列表