指纹比较代码

时间:2012-07-10 09:37:07

标签: android fingerprint

我已将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;
}

感谢

2 个答案:

答案 0 :(得分:0)

您不能进行字符串比较或逐像素比较之类的比较。仅当您一次又一次拥有相同的指纹图像时,才有可能。但实际上,当您拥有两次指纹时,两个图像都将彼此不同,并且位置变化,角度变化和扫描质量都会有所变化。因此,无法进行字符串/像素比较。

所有扫描仪均提供用于捕获指纹并比较指纹(1:1)的SDK,可用于开发桌面应用程序。如果需要在服务器上比较扫描的图像,则需要实现自己的自动手指识别算法,或者必须使用第三方服务,例如

  1. CAMS
  2. M2Sys
  3. Neurotechnology

答案 1 :(得分:-1)

要比较两个位图,您可以将openCV库用于android。图像编写有很多功能,这个主题很广泛,取决于你需要的精确度。你可以从cvNorm函数开始。

在下面的链接中,您将拥有在Java下编译的openCV库和示例,因此您不必在C中编写本机代码。

link

openCV website