iOS中的OpenCV标记跟踪
我正在寻找增强现实标记跟踪,并在github上找到了一个出色的OpenCV示例 我相信我找到了被翻译成它所寻找的标记的代码iOS中的OpenCV标记跟踪,ios,opencv,augmented-reality,Ios,Opencv,Augmented Reality,我正在寻找增强现实标记跟踪,并在github上找到了一个出色的OpenCV示例 我相信我找到了被翻译成它所寻找的标记的代码 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 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;
}
int-Marker::hammDistMarker(cv::Mat位)
{
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;
对于(int y=0;y您有一个名为ids[]的矩阵,该矩阵具有二进制中标记的代码。
如果以二进制读取,矩阵中的第一行是{1,0,0,0,0},标记图像显示图像中的第一行是一方白色和四方黑色
下一行有{black,white,white,black}={0,1,1,1,0},对应于矩阵中的第四行
函数的作用是:计算摄像机拍摄的图像与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}
};
对不起,我试着上传一张图片,但是我不能
我希望这些信息能对你有所帮助
如果您愿意,我可以用符号绘制一个标记。我使用相同的代码。我创建了不同的标记图像,但它们的ID不是旋转不变的。您有任何有效标记的来源,或者我如何自己创建新标记?为什么第一行是图像的第一行,第二行是图像的第四行?