2014-02-06 71 views
0

我正在尋找增強現實標記跟蹤並在github上找到了一個輝煌的OpenCV示例。iOS中的OpenCV標記跟蹤

https://github.com/jorge-r-murillo-c/AR-IOs-marker-detector

我相信我發現,在該標記翻譯代碼,其尋找

int Marker::hammDistMarker(cv::Mat bits) 
{ 
    int ids[4][5]= 
    { 
    {1,0,0,0,0}, 
    {1,0,1,1,1}, 
    {0,1,0,0,1}, 
    {0,1,1,1,0} 
    }; 

    int dist=0; 

    for (int y=0;y<5;y++) 
    { 
    int minSum=1e5; //hamming distance to each possible word 

    for (int p=0;p<4;p++) 
    { 
     int sum=0; 
     //now, count 
     for (int x=0;x<5;x++) 
     { 
     sum += bits.at<uchar>(y,x) == ids[p][x] ? 0 : 1; 
     } 

     if (minSum>sum) 
     minSum=sum; 
    } 

    //do the and 
    dist += minSum; 
    } 

    return dist; 
} 

然而,這有標記的圖片沒有相關

enter image description here

我在書中看過這段代碼是從哪裏來的,但對我來說沒有意義。

http://books.google.co.uk/books?id=UjWoIFHcr58C&pg=PT119&lpg=PT119&dq=hammDistMarker&source=bl&ots=S8l0Frrx1A&sig=4m9R7A-UJqk3WnfvOdKWYadZMbQ&hl=en&sa=X&ei=IsfzUpu-Ia6e7Aaq6oDIDg&ved=0CD0Q6AEwAg#v=onepage&q=hammDistMarker&f=false

是否有一個工具,過程,函數,都會使圖像中的跟蹤數據還是我找錯了樹?

+0

我使用的是相同的代碼。我創建了不同的標記圖像,但它們的ID不是旋轉不變的。您是否有任何有效標記的來源,或者我如何自己創建新標記? –

回答

1

您有一個名爲ids []的矩陣,並且此矩陣具有二進制系統中標記的代碼。 如果以二進制讀取,矩陣的第一行是{1,0,0,0,0},標記圖像顯示圖像中的第一行是一個正方形白色和四個方形黑色。

下一行有{黑色,白色,白色,白色,黑色} = {0,1,1,1,0},它對應於矩陣中的第四行。

hammDistMarker()函數計算攝像頭捕獲的圖像與ids矩陣中的代碼之間的距離,但它計算每行的行數。

例如,如果您刪除標記的第一行中的白色方塊,將基:

int ids[4][5]= 
    { 
    {0,0,0,0,0}, 
    {1,0,1,1,1}, 
    {0,1,0,0,1}, 
    {0,1,1,1,0} 
    }; 

對不起,我試着上傳圖片,但我不能。

我希望這些信息對您有所幫助。

如果你願意,我可以用符號繪製一個標記。

+0

爲什麼第一行是圖像的第一行,第二行是圖像的第四行? – Burf2000