Open CV® 是電腦視覺與機器學習的函式庫,包含影像擷取、多種影像處理方法、特徵偵測、以及物件識別等豐富功能,透過 OpenCV 擷取並分析影像可輕鬆達成畫面動態偵測的目的,當攝影機畫面有變化程式即可偵測出變化並發出警告。本篇文章以 python 搭配 python-opencv 函式庫實做,可至 motion-detector 下載專案程式碼。
影像動態偵測流程如下:
- 擷取連續影像
- 計算影像差異: diff = img1 - img2 相同部份為黑色反之為其他亮度
- 迷糊化:對差異影像進行模糊化使雜訊淡化
- 設定門檻條件:將亮度低的資料濾除,並增強大於門檻的資料點
- 擷取圖形輪廓:尋找影像的輪廓並用方框標記,若輪廓的面積夠大即可判定變化發生
程式架構如下圖:
- motion 類別包含以下物件:
- cam - 用來擷取影像
- imageContainer - 影像/資料儲存容器
- strategyContruction - 提供影像處理流程所需的演算法
- eventAlarm - 當異常偵測時啟動警告
- 以 strategy pattern 實做影像處理算法:
- 定義 alternativeStrategy 模板,讓各個演算法繼承 alternativeStrategy 並實做各自的 execute() 方法
- diffStrategy - 計算影像差異
- blurStrategy - 迷糊化
- thresStrategy - 設定門檻條件強化影像
- findContoursStrategy - 尋找影像輪廓
執行程式:
- 安裝所需套件
sudo apt-get install python-opencv aplay
- 執行動態偵測
python motion.py
- 如下圖所示左側為攝影機擷取影像右側為動態偵測狀態(以0.5倍速度播放),當影像中球移動時即可偵測出變化,並將變化的範圍以方框標示出來。
你好我用樹莓派執行時出現
Traceback (most recent call last):
File “motion.py”, line 122, in
Motion = motion()
File “motion.py”, line 18, in __init__
from camera import camera
ImportError : No module named camera
請問一下是哪裡出問題了?
請確認下列事項:
1. 安裝必要套件 sudo apt-get install python-opencv aplay
2. 下載完整範例程式專案 git clone https://github.com/ChoBill/motion-detector.git
3. 接上webcam或是關機後接上相機模組
到 motion-detector 目錄中執行 python motion.py 測試
你好~
我嘗試安裝必要套件sudo apt-get install python-opencv aplay
顯示找不到aplay這個套件
您可以嘗試下指令:
> whereis aplay
如果有顯示 aplay 檔案位置則表示系統已經安裝該程式不需再安裝,僅須安裝 python-opencv 即可
想請問一下說 您的環境是在python2 以及opencv3嗎
使用 python 2 以及 opencv 2.4