2015-07-19 61 views
0

一些對象我在街上攝像頭,我想跟蹤每一輛汽車移動盈方攝像頭 我用這個背景Substration 現在我只想對OpenCV的思想或方法幫我忽略了一些對象 我的意思追蹤每一件事情在街頭和忽略一個對象人力 蔭新上的OpenCV的OpenCV忽略的框架

我嘗試它

Ptr<BackgroundSubtractor> pMOG2; 
pMOG2 = createBackgroundSubtractorMOG2(); 

.....到代碼的結束

我使用背景Substration,因爲它的跟蹤每一件事都面前移動它 任何想法忽略人類只有

回答

0

那麼,如果你想忽略人的對象,你應該首先知道哪些對象是人,哪些不是人。

通常要找到圖像(或視頻流)中的人,您使用的是人物探測器。你可以用HogDescriptor

HOGDescriptor hog; 
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); 

申請的人檢測HOG描述符的例子做可以在opencv_source_code /樣品/ CPP/peopledetect.cpp

一個GPU例如在申請人們HOG描述符中找到檢測可以在opencv_source_code/samples/gpu/hog.cpp找到

然後,您可以檢查您的移動對象是否爲人,並決定是否忽略它們。

既然你要跟蹤的汽車,更簡單的方法是基於以下考慮:一個人是比汽車,或者(參照它們的邊框)一個人平時的高度大於小寬度(通常是一個人站立或行走),換一輛車的方式是。你可以應用簡單的幾何約束來忽略應該是一個人。

  • 您可以根據相機的分辨率和視圖設置人物邊界框的最大面積。我們稱這個面積值爲maxAreaPerson然後,對於每個移動對象,您將獲得邊界框(您可能已經這樣做了,或者只是使用boundingRect(...))。如果框區域小於maxAreaPerson,則忽略它。

  • 除了定義最大面積,您可以定義最大寬度,高度,高寬比或它們的組合。

  • 如果遠離相機,您的物體可能會更小。長寬比將是有用的,因爲它不受物體相對於相機的距離的影響。或者,您可以在視圖中定義幾個區域(例如,靠近相機,遠離相機,離相機很遠),併爲每個區域定義約束。

+0

謝謝多數民衆贊成在幫助:)) –