本篇介紹如何用 Python 搭配 OpenCV 模組的 cv2.VideoCapture 將來源的影像(攝影機或串流影片),儲存寫入video影片到檔案裡。
使用範例
如果遇到 ImportError: No module named 'cv2'
這個錯誤訊息的話,請安裝 python 的 OpenCV 模組,參考這篇安裝吧!。
先前的文章我們學習了如何讀取播放影片,那這篇要來學習如何儲存影片,
如果要將來源影片(不論來源是攝影機影像還是影片)要存成圖片的話只要使用 cv2.imwrite()
就可以了,
那如果想要存成影片檔的話,我們可以使用 VideoWriter
這個 class,cv2.VideoWriter()
的第一個參數是指定輸出的檔名,例如:下列範例中的 output.avi,
第二個參數為指定 FourCC
,
第三個參數為 fps 影像偵率,
第四個參數為 frameSize 影像大小,
最後參數代表是否要存彩色,否則就存灰階,預設為 true,
FourCC 是 4-byte 大小的碼,用來指定影像編碼方式,
如同下列範例的 fourcc 變數,它可以由 cv2.VideoWriter_fourcc()
來產生,cv2.VideoWriter_fourcc()
的參數是傳入四個字元就會回傳該 fourcc,可使用的編碼列表可以參考www.fourcc.org,同時也要看該平台有沒有支援。
常見的編碼格式有,以使用MJPG為例子的話,可以用這兩種寫法都一樣,
cv2.VideoWriter_fourcc(‘M’,’J’,’P’,’G’) 或者是 cv2.VideoWriter_fourcc(*’MJPG’)。
1 | #!/usr/bin/env python3 |
如果要輸出附檔名為 mp4 可用下列寫法的其中一種,1
2
3
4fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
其他參考
OpenCV: Getting Started with Videos
https://docs.opencv.org/master/dd/d43/tutorial_py_video_display.html
OpenCV 擷取網路攝影機串流影像,處理並寫入影片檔案教學 - G. T. Wang
https://blog.gtwang.org/programming/opencv-webcam-video-capture-and-file-write-tutorial/
其它相關文章推薦
Python OpenCV 彩色轉灰階(RGB/BGR to GRAY)
Python OpenCV 彩色轉HSV(RGB/BGR to HSV)
Python OpenCV 彩色轉YCbCr(RGB/BGR to YCbCr)
Python OpenCV 灰階轉彩色(Gray to RGB/BGR)
Python OpenCV 影像二值化 Image Thresholding
Python OpenCV 影像平滑模糊化 blur
Python OpenCV 影像邊緣偵測 Canny Edge Detection
Python OpenCV 垂直vconcat 和水平hconcat 影像拼接
Python OpenCV resize 圖片縮放
Python 新手入門教學懶人包