<div dir="ltr">I have been trying to implement fingerprint identification by getting fp_print_data from the device once and compare it with files on the database. But i have a problem with fpi_img_compare_print_data. It returns -22 - Invalid print format. I explicitly removed the check condition in img.c and it takes too much time to compute. And I don't think it is returning a valid value. I don't know where I am missing. <div><br></div><div><br></div><div>here is the code.</div><div><br></div><div><br></div><div><div>int main(int argc, char * argv[]) {</div><div>        </div><div>        struct fp_dscv_dev ** discv_devs = NULL; /* list of scanners */</div><div>        struct fp_dscv_dev * using_dev = NULL; /* using device */</div><div>        struct fp_dev * dev = NULL;</div><div>        struct fp_print_data * print_data = NULL; /* fingerprint from base */</div><div>        struct fp_print_data * print_image = NULL; /* fingerprint from file */</div><div>        int verify_retval = 0;</div><div>        gchar *path;</div><div><br></div><div>        /* init library fprint */</div><div>        if (fp_init()) {</div><div>                fprintf(stderr, "Cannit init fprint library!\n");</div><div>                return 1;</div><div>        }</div><div><br></div><div>        // get list of devices</div><div>        discv_devs = fp_discover_devs();</div><div>        if (!discv_devs) {</div><div>                fprintf(stderr, "Cannot discover any fingerprint device!\n");</div><div>                fp_exit();</div><div>                return 1;</div><div>        }</div><div><br></div><div>        // use first found device and print driver's name</div><div>        using_dev = discv_devs[0];</div><div>        printf("Found device using %s driver.\n", fp_driver_get_full_name(fp_dscv_dev_get_driver(using_dev)));</div><div>        if ((dev = fp_dev_open(using_dev)) == NULL) {</div><div>                fprintf(stderr, "Could not open device\n");</div><div>                fp_exit();</div><div>                return 1;</div><div>        }</div><div><br></div><div>        printf("Enter the path to file 1:\n");</div><div>        int data1;</div><div>        scanf("%d", &data1);</div><div><br></div><div>        /* Load finger print from base */</div><div>        printf("Loading first print\n");</div><div>        if (fp_print_data_load(dev, user_id1, &print_data)) {</div><div>                fprintf(stderr, "Failed to load the first fingerprint\n");</div><div>                fp_dev_close(dev);</div><div>                fp_exit();</div><div>                return 1;</div><div>        }</div><div><br></div><div>        printf("Enter the path to file 1:\n");</div><div>        int data2;</div><div>        scanf("%d", &data2);</div><div><br></div><div>        /* Load fingerprint from file */</div><div>        printf("Loading second print\n");</div><div>        if (fp_print_data_load(dev, 2, &print_image)) {</div><div>                fprintf(stderr, "Failed to load the second fingerprint\n");</div><div>                fp_dev_close(dev);</div><div>                fp_exit();</div><div>                return 1;</div><div>        }</div><div><br></div><div>        int match_score;</div><div><br></div><div>        match_score = fpi_img_compare_print_data (print_data, print_data);</div><div>        if (match_score > 40){</div><div>                printf("Matched\n");</div><div>        }else{</div><div>                printf("Not Matched\n");</div><div>        }</div><div>        printf("Score = %d\n", match_score);</div><div><br></div><div>        // free resources</div><div>        </div><div>        fp_print_data_free(print_data);</div><div>        fp_print_data_free(print_image);</div><div>        fp_dev_close(dev);</div><div>        fp_exit();</div><div><br></div><div>        return 0;</div><div>}</div></div><div><br></div></div>