iOS中的OpenCV标记跟踪

时间:2014-02-06 17:51:01

标签: ios opencv augmented-reality

我正在寻找增强现实标记跟踪,并在github上找到了一个出色的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

是否有工具,流程,功能可以将图像转换为跟踪数据,还是我咆哮错误的树?

1 个答案:

答案 0 :(得分: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}
  };

对不起,我尝试上传图片,但我不能。

我希望这些信息对您有所帮助。

如果你愿意,我可以用符号画一个标记。