我已经搜索了好几天,但我似乎无法知道从哪里开始。我试图通过它们的颜色比较基本图像和其他10个图像,并且我可以使用欧几里德或直方图匹配而不使用opencv函数。我只试过欧几里德距离。我想要做的是获得image1和image2中每个像素的距离。我显示了距离,我得到了很高的价值。我的代码中有什么问题?请帮忙。 :)
for(p=0;p<height;p++) // row
{
for(p2=0;p2<inputHeight;p2++) // row
{
for(u2=0;u2<inputWidth;u2++) // col
{
r2 = inputData[p2*inputStep+u2*inputChannels+2];
g2 = inputData[p2*inputStep+u2*inputChannels+1];
b2 = inputData[p2*inputStep+u2*inputChannels+0];
}
}
for(p=0;p<height;p++) // row
{
for(u=0;u<width;u++) // col
{
r = data[p*step+u*channels+2];
g = data[p*step+u*channels+1];
b = data[p*step+u*channels+0];
}
}
euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2)));
}
答案 0 :(得分:0)
当您将所有像素的欧几里德距离相加时,您的程序往往会获得非常高的值:
euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2)));
我建议你这样做:
计算图像的颜色直方图(矢量特征)。
计算这些直方图之间的相关系数,作为图像的差异。