我已将sqlite数据库中的指纹印象保存为位图。任何人都可以帮我用android代码的源代码或链接来比较两个指纹印象作为位图。为了平等。
我尝试使用以下代码。但它与存储在数据库中的所有指纹印象相匹配。
public boolean compare(Bitmap imageToCompare , Bitmap imageInDb )
{
System.out.println("Inside Compare");
System.out.println("imageToCompare::::"+imageToCompare);
System.out.println("imageInDb::::"+imageInDb);
/*int width = imageToCompare.getWidth();
System.out.println("width::::::"+width);
int height = imageToCompare.getHeight();
System.out.println("height::::"+height);
int pixelCount = width * height;
int width1 = imageInDb.getWidth();
System.out.println("width1::::::"+width1);
int height1 = imageInDb.getHeight();
System.out.println("height1::::"+height1);*/
int pixelCount = mImageWidth * mImageHeight;
System.out.println("pixelCount::::"+pixelCount);
int[] pixels1 = new int[pixelCount];
int[] pixels2 = new int[pixelCount];
System.out.println("11111111111111111");
//imageToCompare.getPixels(pixels1, 0, 0, 0, width, height);
imageToCompare.getPixels(pixels1, 0,mImageWidth, 0, 0, mImageWidth, mImageHeight);
imageInDb.getPixels(pixels2, 0,mImageWidth, 0,0, mImageWidth, mImageHeight);
System.out.println("22222222222222");
for (int i = 0; i < pixelCount; i++) {
if (pixels1[i] != pixels2[i]) {
System.out.println("333333333333");
return false;
}
}
System.out.println("444444444444444444");
return true;
}
感谢
答案 0 :(得分:0)
您不能进行字符串比较或逐像素比较之类的比较。仅当您一次又一次拥有相同的指纹图像时,才有可能。但实际上,当您拥有两次指纹时,两个图像都将彼此不同,并且位置变化,角度变化和扫描质量都会有所变化。因此,无法进行字符串/像素比较。
所有扫描仪均提供用于捕获指纹并比较指纹(1:1)的SDK,可用于开发桌面应用程序。如果需要在服务器上比较扫描的图像,则需要实现自己的自动手指识别算法,或者必须使用第三方服务,例如
答案 1 :(得分:-1)
要比较两个位图,您可以将openCV库用于android。图像编写有很多功能,这个主题很广泛,取决于你需要的精确度。你可以从cvNorm函数开始。
在下面的链接中,您将拥有在Java下编译的openCV库和示例,因此您不必在C中编写本机代码。