使用OpenCV實現(xiàn)道路車輛計數(shù)
我們將從以下四個方面進行介紹:
1. 用于物體檢測的背景減法算法主要思想。
2. OpenCV圖像過濾器。
3. 利用輪廓檢測物體。
4. 建立進一步數(shù)據(jù)處理的結構。
背景扣除算法

有許多不同的背景扣除算法,但是它們的主要思想都很簡單。
假設有一個房間的視頻,在某些幀上沒有人和寵物,那么此時的視頻基本為靜態(tài)的,我們將其稱為背景(background_layer)。因此要獲取在視頻上移動的對象,我們只需要:用當前幀減去背景即可。
由于光照變化,人為移動物體,或者始終存在移動的人和寵物,我們將無法獲得靜態(tài)幀。在這種情況下,我們從視頻中選出一些圖像幀,如果絕大多數(shù)圖像幀中都具有某個相同的像素點,則此將像素作為background_layer中的一部分。
我們將使用MOG算法進行背景扣除

代碼如下所示:
處理后得到下面的前景圖像

我們可以看出前景圖像上有一些噪音,可以通過標準濾波技術可以將其消除。
濾波
針對我們現(xiàn)在的情況,我們將需要以下濾波函數(shù):Threshold、Erode、Dilate、Opening、Closing。
首先,我們使用“Closing”來移除區(qū)域中的間隙,然后使用“Opening”來移除個別獨立的像素點,然后使用“Dilate”進行擴張以使對象變粗。代碼如下:
處理后的前景如下:

利用輪廓進行物體檢測
我們將使用CV2.findContours函數(shù)對輪廓進行檢測。我們在使用的時候可以選擇的參數(shù)為:CV2.CV_RETR_EXTERNAL------僅獲取外部輪廓。
CV2.CV_CHAIN_APPROX_TC89_L1------使用Teh-Chin鏈逼近算法(更快)代碼如下:
建立數(shù)據(jù)處理框架
我們都知道在ML和CV中,沒有一個算法可以處理所有問題。即使存在這種算法,我們也不會使用它,因為它很難大規(guī)模有效。例如幾年前Netflix公司用300萬美元的獎金懸賞最佳電影推薦算法。有一個團隊完成這個任務,但是他們的推薦算法無法大規(guī)模運行,因此其實對公司毫無用處。但是,Netflix公司仍獎勵了他們100萬美元。
接下來我們來建立解決當前問題的框架,這樣可以使數(shù)據(jù)的處理更加方便
首先我們獲取一張?zhí)幚砥鬟\行順序的列表,讓每個處理器完成一部分工作,在案順序完成執(zhí)行以獲得最終結果。
我們首先創(chuàng)建輪廓檢測處理器。輪廓檢測處理器只需將前面的背景扣除,濾波和輪廓檢測部分合并在一起即可,代碼如下所示:
現(xiàn)在,讓我們創(chuàng)建一個處理器,該處理器將找出不同的幀上檢測到的相同對象,創(chuàng)建路徑,并對到達出口區(qū)域的車輛進行計數(shù)。代碼如下所示:
上面的代碼有點復雜,因此讓我們一個部分一個部分的介紹一下。

上面的圖像中綠色的部分是出口區(qū)域。我們在這里對車輛進行計數(shù),只有當車輛移動的長度超過3個點我們才進行計算
我們使用掩碼來解決這個問題,因為它比使用矢量算法有效且簡單得多。只需使用“二進制和”即可選出車輛區(qū)域中點。設置方式如下:
現(xiàn)在我們將檢測到的點鏈接起來。
對于第一幀圖像,我們將所有點均添加為新路徑。
接下來,如果len(path)== 1,我們在新檢測到的對象中找到與每條路徑最后一點距離最近的對象。
如果len(path)> 1,則使用路徑中的最后兩個點,即在同一條線上預測新點,并找到該點與當前點之間的最小距離。
具有最小距離的點將添加到當前路徑的末端并從列表中刪除。如果在此之后還剩下一些點,我們會將其添加為新路徑。這個過程中我們還會限制路徑中的點數(shù)。
現(xiàn)在,我們將嘗試計算進入出口區(qū)域的車輛。為此,我們需獲取路徑中的最后2個點,并檢查len(path)是否應大于限制。
最后兩個處理器是CSV編寫器,用于創(chuàng)建報告CSV文件,以及用于調試和精美圖片的可視化。
結論
正如我們看到的那樣,它并不像許多人想象的那么難。但是,如果小伙伴運行腳本,小伙伴會發(fā)現(xiàn)此解決方案并不理想,存在前景對象存在重疊的問題,并且它也沒有按類型對車輛進行分類。但是,當相機有較好位置,例如位于道路正上方時,該算法具有很好的準確性。
為大家準備了OpenCV項目實戰(zhàn)資源!深度學習以及計算機視覺學習資料!可論文指導1對1付費咨詢!
可添加VX公眾號:AI技術星球,回復333免費領學習資料!
【1】人工智能學習課程及配套資料
【2】超詳解人工智能學習路線圖及學習大綱
【3】學人工智能必看優(yōu)質書籍電子書匯總
【4】人工智能面試題庫大全以及問題總結
【5】人工智能經(jīng)典論文100篇+解讀+復現(xiàn)教程
【6】計算機視覺技術教學課程+YOLO等項目教學
【7】人工智能最新行業(yè)報告??