#include "faceAPI.h" #include "faceDB.h" faceDB fdb = faceDB(); faceAPI::faceAPI(){ //´´½¨¾²Ì¬ÈËÁ³Ê¶±ð¾ä±ú£¬Í¬Ê±´´½¨×´Ì¬±êÁ¿ cv_result_t cv_result = 0; cv_face_create_detector(&handle_detect, NULL, CV_DETECT_ENABLE_ALIGN_21); cv_verify_create_handle(&handle_verify1, "verify.model"); //faceDB* f_db = faceDB.GetInstance(); } faceAPI::~faceAPI(){ } int faceAPI::do_reasch(cv::Mat image){ if (!image.data) { fprintf(stderr, "fail to read img\n"); return -1; }else fprintf(stderr, "read img\n"); p_f = extract_feature(image); if (!p_f) { fprintf(stderr, "p_f is null\n"); return -2; } return p_img_search(p_f); } int faceAPI::do_reasch(char* s_feature){ get_feature(s_feature,p_f); return p_img_search(p_f); } int faceAPI::do_register(cv::Mat image){ p_f = extract_feature(image); //db add int indx = 1; return indx; } int faceAPI::p_img_search(cv_feature_t *p_feature){ std::cout<<"p img search"<= 1) { st_result = cv_verify_get_feature(handle_verify1, (unsigned char *)image_color.data, CV_PIX_FMT_BGR888, image_color.cols, image_color.rows, image_color.step, p_face, &p_feature, NULL); if (st_result != CV_OK) { fprintf(stderr, "cv_verify_get_feature failed, error code %d\n", st_result); } } else { fprintf(stderr, "can't find face in "); } // release the memory of face cv_face_release_detector_result(p_face, face_count); return p_feature; } //@brief ÌØÕ÷ֵת»»Îª×Ö·û´® //@param ÌØÕ÷Öµ //@return ×Ö·û´®¸ñʽµÄÌØÕ÷Öµ int faceAPI::get_char(cv_feature_t *p_feature,char* feature_str){ return cv_verify_serialize_feature(p_feature,feature_str); } //@brief ×Ö·û´®×ª»»ÎªÌØÕ÷Öµ //@param ×Ö·û´®¸ñʽµÄÌØÕ÷Öµ //@return ÌØÕ÷Öµ int faceAPI::get_feature(char *feature_str,cv_feature_t *p_feature){ p_feature = cv_verify_deserialize_feature(feature_str); if(p_feature != NULL){ return 0; }else return -1; }