我想在使用OpenCV的Android应用程序中比较2个HOG描述符。我发现计算两个向量之间的欧几里德距离有困难,它们的类型是MatOfFloat。你有一个可以帮助我的代码示例。
计算HOG描述符的函数是mHOGDescriptor.compute(imgMat,descriptors,winStride,padding,locations);这个函数的输出是他的类型是MatOfFloat的描述符。一旦我找到了2张图像的HOG描述符,我想计算它与这里之间的欧几里得距离。
我尝试使用此代码,但这不起作用:
for(int i=0; i<imgMat.rows();i++)
{
for(int j=0; j<imgMat.cols();j++)
{
distance1=(int) (distance1+(mDescriptors1.get(i, j)-mDescriptors2.get(i, j)));
}
}
答案 0 :(得分:1)
我发现您的代码有两个问题:
请尝试以下代码:
distance=0;
for(int i=0; i<imgMat.rows();i++)
{
for(int j=0; j<imgMat.cols();j++)
{
distance+=(mDescriptors1.get(i, j)[0]-mDescriptors2.get(i, j)[0])*(mDescriptors1.get(i, j)[0]-mDescriptors2.get(i, j)[0]);
}
}