【问题标题】:OpenCV marker tracking in iOSiOS 中的 OpenCV 标记跟踪
【发布时间】:2014-02-06 17:51:00
【问题描述】:

我正在研究增强现实标记跟踪,并在 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;
}

但这与标记的图片无关

我确实在书中查看了该代码的来源,但对我来说毫无意义。

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

是否有工具、流程、功能可以将图像转换为跟踪数据,还是我找错了树?

【问题讨论】:

  • 我使用的是相同的代码。我创建了不同的标记图像,但它们的 ID 不是旋转不变的。您是否有任何有效标记的来源或者我如何自己创建新标记?

标签: ios opencv augmented-reality


【解决方案1】:

您有一个名为 ids[] 的矩阵,该矩阵具有二进制标记的代码。 如果用二进制读取,矩阵的第一行是{1,0,0,0,0},标记图像显示图像的第一行是一个正方形的白色和四个正方形的黑色。

下一行的 {black,white,white,white,black}={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}
  };

抱歉,我尝试上传图片,但无法上传。

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

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

【讨论】:

  • 为什么第一行是图片的第一行,第二行是图片的第四行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2012-04-20
  • 2022-08-16
相关资源
最近更新 更多