2011-02-24 102 views
0

我試圖從架空攝像頭跟蹤機器人的位置。但是,由於我對機器人或環境的訪問不多,因此我一直在使用網絡攝像頭的快照。
該機器人具有5個明亮的LED定位策略,與機器人和環境顏色不同,從而易於隔離。
我已經能夠做到這一點使用EmguCV,導致像下面的二進制圖像。我現在的問題是,如何獲得五個斑點的位置並使用這些位置來確定機器人的位置和方向?如何使用EmguCV檢測小塊?

我一直在嘗試與Emgu.CV.VideoSurveillance.BlobTrackerAuto類,但它頑固地拒絕檢測上述圖像中的斑點。當談到其中的任何一點時,作爲一個新手,我不知道我會做錯什麼。
那麼在上面的圖片中獲取斑點位置的最佳方法是什麼?

回答

2

我不能告訴你如何用emgucv來做,特別是你需要將呼叫從opencv轉換爲emgucv。你會使用cv::findContours來獲得斑點和cv::moments來獲得斑點的位置(獲得斑點中點的公式是在cv::moments的文檔中)。然後,您將使用cv::estimateRigidTransform獲取機器人的位置和方向。

+0

這對我幫助很大,謝謝。 不幸的是,我似乎無法找到一個emguCV模擬器來估計剛轉換,並且不知道如何調用它...我會繼續尋找,但到目前爲止,您已經幫助我堆積如山。 – 2011-02-25 04:23:59

+1

@death_au:當你擁有5個職位時,不應該太難自己去獲取職位和方向。確定具有3個點的線的中點,使用其他4個點的平均值作爲位置,將從平均值到第5點的方向作爲方向。 – etarion 2011-02-26 15:37:06

+0

@death_au:它是'CvInvoke.cvEstimateRigidTransform();'在Emgu中 – asakura89 2012-07-31 06:13:19

0

我使用cvBlob庫來工作blob。昨天我用它來檢測小斑點並且工作正常。