Python | OpenCV 圖片與影片即時標記與繪圖
📚 前言
在前一篇我們學會了 滑鼠與鍵盤事件互動。
這一篇要介紹 圖片與影片即時標記與繪圖,並且加入滑鼠事件互動。
透過這項技術,我們可以在單張圖片或播放影片時,用滑鼠圈選矩形區域,動態標記內容。這在教學、監控或互動應用中非常常見。
🔎 原理說明
- 圖片:載入單張圖片,透過滑鼠事件在圖片上繪製矩形。
- 影片:逐幀讀取影片或攝影機影像,並在每一幀上根據滑鼠座標繪製矩形。
- 滑鼠事件:透過
cv2.setMouseCallback()監聽滑鼠操作。
🧠 函式與參數說明
📌 cv2.setMouseCallback()
設定滑鼠事件回呼函式
1 | cv2.setMouseCallback(winname, onMouse) |
- winname:視窗名稱。
- onMouse:滑鼠事件處理函式。
📌 cv2.rectangle()
繪製矩形
1 | cv2.rectangle(img, pt1, pt2, color, thickness) |
- img:要繪製的圖片或影片幀。
- pt1:左上角座標
(x1, y1)。 - pt2:右下角座標
(x2, y2)。 - color:矩形顏色
(B, G, R)。 - thickness:邊框粗細,若設為
-1則填滿矩形。
💻 範例程式一 — 圖片即時滑鼠繪圖
1 | import cv2 |

圖:圖片即時滑鼠繪圖,使用滑鼠框選矩形區域
💻 範例程式二 — 影片即時滑鼠繪圖
1 | import cv2 |

圖:影片即時滑鼠繪圖,使用滑鼠框選矩形區域
⚠️ 注意事項
- 滑鼠事件必須綁定在
cv2.namedWindow()建立的視窗上。 - 框選座標需在圖片或影片範圍內,否則會出錯。
- 在圖片範例中使用
backup.copy(),避免矩形疊加造成畫面混亂。 - 在影片範例中需依影片 FPS 調整
cv2.waitKey()的數值,常用 30 毫秒。
📊 應用場景
- 圖片標註:在圖片上框選重點區域。
- 教學影片標註:在影片中即時框選重點。
- 監控系統:即時標記偵測到的物件。
- 互動應用:讓使用者在圖片或影片中自由繪製。
🎯 結語
本篇我們學會了如何使用 OpenCV 圖片與影片即時標記與繪圖,透過滑鼠事件在圖片或影片中框選矩形。
這樣的互動方式讓標記更靈活,後續可以延伸到 即時馬賽克或模糊處理,打造更實用的影像應用。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials
Pexels — 免費影片素材
