我正在寻找增强现实标记跟踪,并在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;
}
然而,这与标记的图片没有关联
我确实在书中看到这段代码来自但对我来说毫无意义。
是否有工具,流程,功能可以将图像转换为跟踪数据,还是我咆哮错误的树?
答案 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}
};
对不起,我尝试上传图片,但我不能。
我希望这些信息对您有所帮助。
如果你愿意,我可以用符号画一个标记。