2013-03-05 139 views
2

我試圖檢測圖像中的車輛(實際上是視頻中幀的序列)。我是新來的opencv和python,並在Windows 7下工作。使用python-opencv的水平和垂直邊緣配置文件

有沒有辦法獲得圖像的水平邊緣和垂直邊緣,然後將合成圖像加總到相應的矢量?

是否有Python代碼或函數可用於此。

我看着thisthis,但不知道該怎麼做。 您可以使用以下圖片進行說明。

編輯

我被下面的文件中提出這一觀點的人們(抱歉,如果你沒有訪問權限)。

Betke,M .; Haritaoglu,E. &戴維斯,LS實時多個車輛檢測,並在移動車輛上機器視覺和應用,施普林格出版社,2000年,12跟蹤,69-83

http://i.stack.imgur.com/y5MXl.jpg

回答

1

我會看看在opencv的方塊示例中,發佈了​​。它使用canny,然後輪廓查找返回每個方塊的邊。您應該可以修改此代碼以獲取您正在查找的水平和垂直線。 Here是canny的python調用文檔的鏈接。這對所有的邊緣檢測都很有幫助。大約一個小時後,我可以回家並給你一個你想要的東西的實例。

+0

謝謝。我提供的圖像(方形)僅用於說明目的,因爲我沒有道路上的免費車輛圖像 – 2013-03-05 22:33:31

+0

如果您確切地知道車輛後部的外觀是什麼樣子,並且可以假定它仍然是相對恆定的,那麼我會推薦使用模板匹配。如果它是恆定的,那麼它可能會更精確一些,計算壓力也更小。 – 2013-03-05 22:36:40

+0

模板的想法可能會縮小感興趣的區域。不幸的是,現實生活中的問題不是基本的算法友好。我擁有的視頻正在路上,我需要識別駕駛員所駕駛的每輛車。 – 2013-03-05 22:38:57

1

通常,幾何方法對象檢測並不是非常成功,因爲您假設的外觀模型可能很容易被遮擋,噪聲或方向更改所侵犯。

機器學習方法通​​常在我看來效果更好,並且可能會爲您的問題提供更強大的解決方案。由於您似乎在使用OpenCV,因此您可以查看Casacade Classifiers,其中OpenCV提供了Haar小波和基於局部二元模式特徵的分類器。

我提供的鏈接是一個具有非常完整步驟的教程,解釋如何使用多個預先編寫的實用程序創建分類器。基本上你會創建一個汽車'正面'圖像和一個具有典型背景'負面'圖像的目錄。實用程序opencv_createsamples可用於創建扭曲的訓練圖像以模擬來自一小組圖像的不同方向和平均強度。然後使用實用程序opencv_traincascade設置幾個命令行參數來選擇不同的訓練選項,爲您輸出訓練好的分類器。

檢測可以使用C++或Python接口與此訓練分類器執行。 例如,使用Python,你可以加載分類器,並在圖像上執行檢測以獲取選定的邊界矩形:

image = cv2.imread('path/to/image') 
cc = cv2.CascadeClassifier('path/to/classifierfile') 
objs = cc.detectMultiScale(image)