Python-OpenCV 處理視訊(四): 運動檢測

發表於2016-05-26

0x00. 平均值法

通過計算兩幀影象之間變化了的畫素點佔的百分比,來確定影象中是否有動作產生。

這裡主要用到 Absdiff 函式,比較兩幀影象之間有差異的點,當然需要將影象進行一些處理,例如平滑處理,灰度化處理,二值化處理,經過處理之後的二值影象上的點將更有效。

程式碼示例:

0x01. 背景建模與前景檢測

背景建模也是檢測運動物體的一種辦法,下面是程式碼示例:

0x02. 我的方法

上面的幾種辦法我都試了下,基本上能識別出運動的物體,但是發現總是有點瑕疵,所以又比對了幾種別人的方案,然後合成了一個自己的方案:

具體處理思路:

  • 對兩幀影象做一個absdiff得到新影象。
  • 對新影象做灰度和二值化處理。
  • 使用findContours函式獲取二值化處理之後的圖片中的輪廓。
  • 使用contourArea()過濾掉自己不想要的面積範圍的輪廓。

這個辦法基本上能夠檢測出物體的影象中物體的移動,而且我覺得通過設定contourArea()函式的過濾範圍,可以檢測距離攝像頭不同距離範圍的運動物體。

以下是程式碼示例:

相關文章