Python | OpenCV 專案:即時濾鏡相機
📚 前言
在上一篇 OpenCV QR Code 與 BarCode 辨識 中,我們完成了條碼辨識的實作,正式踏入 專案實作篇。
這一篇是第一個整合專案:即時濾鏡相機。
目標是把前面學過的色彩轉換、模糊、形態學、繪圖等功能整合在一起,做出一個可用鍵盤切換濾鏡的即時相機程式。沒有攝影機也沒關係,程式同時支援以影片檔作為輸入來源,效果完全相同。
🎯 專案目標
- 攝影機或影片檔即時預覽
- 按鍵切換 10 種以上的濾鏡效果
- 畫面顯示目前濾鏡名稱
- 按
s截圖儲存 - 按
q離開
🗃️ 專案結構
1 | filter_camera/ |
🎨 範例影片
- 來源:Pexels - Code,屬於無版權影片,可自由下載與使用。
- 下載後將檔名改為
sample.mp4,放到專案的assets/目錄下。
💻 filters.py — 濾鏡函式集合
- 定義灰階、模糊、邊緣、復古、負片、銳化、浮雕、卡通、馬賽克、暖冷色調等 12 種濾鏡函式
1 | # filters.py |
💻 main.py — 主程式
cv2.VideoCapture() 同時支援攝影機 index(整數)與影片檔路徑(字串),因此只需在開頭以 sys.argv 判斷來源,其餘邏輯完全不變。影片播完後以 CAP_PROP_POS_FRAMES seek 回第 0 幀即可無縫循環,濾鏡效果的呈現與真實攝影機沒有差異。
1 | # main.py |

圖:開啟影片檔,以方向鍵或是(a / d)切換濾鏡並在畫面顯示名稱,按 s 截圖儲存,按 q 離開
💻 執行方式
1 | cd filter_camera |
⚠️ 注意事項
- 影片檔模式自動循環:影片播完會自動從頭播放,適合無攝影機環境展示所有濾鏡效果;若要單次播放,移除
if is_video的 seek 邏輯即可。 - 方向鍵的 keycode 因平台而異:Windows 上
←為81、→為83;若方向鍵無效,可改用a/d切換。 - 卡通濾鏡速度較慢:
bilateralFilter計算量大,幀率可能下降,可縮小d(直徑)參數或降低解析度改善。 - 截圖目錄:預設儲存在執行目錄下的
output/,初次執行會自動建立。
🎯 結語
即時濾鏡相機整合了色彩轉換、濾波、形態學、LUT 色調調整等多種技術,是一個能快速驗證學習成果的入門專案。
下一篇將進入 OpenCV 專案:即時人臉辨識系統,把人臉偵測進一步升級為能辨識具體身份的系統。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
OpenCV 官方文件 — Image Filtering
OpenCV 官方文件 — Color Conversions
