[编辑] 我设计了一些图像比较代码.匹配的部分仍然有点缺陷,我希望得到一些帮助.该项目可在 - GitHub找到.
我有这两个图像Img1和Img2:

当我在openCV中使用以下命令时
Mat img1 = Highgui.imread("mnt/sdcard/IMG-20121228.jpg");
Mat img2 = Highgui.imread("mnt/sdcard/IMG-20121228-1.jpg");
try{
double l2_norm = Core.norm( img1, img2 );
tv.setText(l2_norm+"");
} catch(Exception e) {
//image is not a duplicate
}
Run Code Online (Sandbox Code Playgroud)
我得到了l2_norm的double值.对于重复的图像对,此双值会有所不同.但是如果图像不同,则抛出异常.这是我识别重复图像的方式吗?还是有更好的方法?我用Google搜索广泛,无法找到真正有说服力的答案.我希望代码和解释如何比较两个图像并获得布尔值true或false取决于图像.
编辑
Scalar blah= Core.sumElems(img2);
Scalar blah1=Core.sumElems(img1);
if(blah.equals(blah1))
{
tv.setText("same image");
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但if条件永远不会满足.我假设有一些差异,但没有任何compare功能Scalar.我该怎么办?
编辑
try{
Scalar blah= Core.sumElems(img2);
Scalar blah1=Core.sumElems(img1);
String b=blah.toString();
String b1=blah1.toString();
System.out.println(b+" "+b1);
double comp=b.compareTo(b1);
tv.setText(""+comp);
}
Run Code Online (Sandbox Code Playgroud)
这种方法又有缺陷.虽然它可以用于比较具有相当精确度的图像,但是当图像具有不同的尺寸时它会失败. …