Python | OpenCV 視訊檔案處理與剪輯
📚 前言
在前一篇我們學會了 攝影機即時圖片讀取。
這一篇要介紹如何使用 OpenCV 處理與剪輯視訊檔案。
這是電腦視覺與多媒體應用的重要基礎,常用於影片分析、監控錄影、資料集製作等場景。
🔎 原理說明
- 視訊檔案讀取:透過
cv2.VideoCapture() 讀取影片檔。
- 視訊檔案儲存:透過
cv2.VideoWriter() 將影格寫入新影片。
- 剪輯與處理:可在迴圈中對每個影格進行操作,例如裁切、灰階化、加文字。
🧠 函式與參數說明
📌 cv2.VideoCapture()
用途:讀取影片檔或串流。
1
| cap = cv2.VideoCapture("video.mp4")
|
- “video.mp4”:影片檔路徑。
- cap:影片物件。
📌 cap.get()
用途:取得影片屬性。
1 2 3
| fps = cap.get(cv2.CAP_PROP_FPS) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
- CAP_PROP_FPS:每秒影格數。
- CAP_PROP_FRAME_WIDTH:影格寬度。
- CAP_PROP_FRAME_HEIGHT:影格高度。
📌 cv2.VideoWriter()
用途:建立影片輸出物件。
1 2
| fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))
|
- fourcc:編碼格式,例如
'XVID'、'MJPG'。
- fps:每秒影格數。
- (width, height):影格大小。
- out:影片輸出物件。
💻 範例程式 — 讀取並顯示影片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import cv2
cap = cv2.VideoCapture("video.mp4")
while True: ret, frame = cap.read() if not ret: print("影片結束或無法讀取") break
cv2.imshow("Video", frame)
if cv2.waitKey(30) & 0xFF == ord('q'): break
cap.release() cv2.destroyAllWindows()
|

圖:逐格讀取並顯示影片
💻 範例程式 — 儲存影片檔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import cv2
cap = cv2.VideoCapture("video.mp4")
fps = cap.get(cv2.CAP_PROP_FPS) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))
while True: ret, frame = cap.read() if not ret: break
cv2.putText(frame, "OpenCV Demo", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
out.write(frame)
cv2.imshow("Output", frame) if cv2.waitKey(30) & 0xFF == ord('q'): break
cap.release() out.release() cv2.destroyAllWindows()
|

圖:將影片加上文字並輸出
💻 範例程式 — 剪輯影片 (裁切區域)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import cv2
cap = cv2.VideoCapture("video.mp4")
while True: ret, frame = cap.read() if not ret: break
cropped = frame[100:400, 200:600]
cv2.imshow("Cropped", cropped)
if cv2.waitKey(30) & 0xFF == ord('q'): break
cap.release() cv2.destroyAllWindows()
|

圖:裁切影片區域並顯示
⚠️ 注意事項
VideoWriter 的編碼格式需安裝對應的編碼器,否則可能無法輸出。
- FPS 與影格大小需與輸入影片一致,否則可能出現錯誤。
- 剪輯操作需注意效能,建議只處理必要的區域。
📊 應用場景
- 影片分析:逐格處理影片,提取特徵。
- 監控錄影:儲存即時影像成影片檔。
- 資料集製作:裁切或標註影片,建立訓練資料。
- 影片剪輯:加文字、裁切、合併影片。
🎯 結語
本篇我們學會了如何使用 OpenCV 讀取、儲存與剪輯視訊檔案,並能在迴圈中對影格進行處理。
這些技術是電腦視覺與多媒體應用的基礎,後續可以結合特徵偵測、物件追蹤等功能,打造更完整的影片分析系統。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials