| | |
| | | unordered_map<string, shared_ptr<vector<unsigned char>>> featureMap; |
| | | list<pair<string, shared_ptr<vector<unsigned char>>>> featureList; |
| | | |
| | | unordered_map<string, shared_ptr<vector<unsigned char>>> allFeatureMap; |
| | | |
| | | extern "C" JNIEXPORT void |
| | | JNICALL |
| | | Java_com_basic_security_utils_FaceId_addFeatureToDb( |
| | |
| | | LogUtil::log(e.what()); |
| | | } |
| | | } |
| | | |
| | | |
| | | extern "C" JNIEXPORT void |
| | | JNICALL |
| | | Java_com_basic_security_utils_FaceId_addFeatureToAllDb( |
| | | JNIEnv *env, jobject, jstring id, jbyteArray featureBuffer) { |
| | | try { |
| | | if (featureBuffer == nullptr) { |
| | | return; |
| | | } |
| | | if (allFeatureMap.size() < 100 || 1 == 1) { |
| | | if (!useFeatureList) { |
| | | unsigned int max_size = allFeatureMap.max_size(); |
| | | { |
| | | int len = env->GetArrayLength(featureBuffer); |
| | | shared_ptr<vector<unsigned char>> feature = make_shared<vector<unsigned char>>(len); |
| | | env->GetByteArrayRegion(featureBuffer, 0, len, |
| | | reinterpret_cast<jbyte *>(feature.get()->data())); |
| | | const char *sid = env->GetStringUTFChars(id, 0); |
| | | allFeatureMap[sid] = feature; |
| | | } |
| | | } |
| | | /*if (useFeatureList) { |
| | | unsigned int max_size = allFeatureMap.max_size(); |
| | | { |
| | | int len = env->GetArrayLength(featureBuffer); |
| | | shared_ptr<vector<unsigned char>> feature = make_shared<vector<unsigned char>>(len); |
| | | env->GetByteArrayRegion(featureBuffer, 0, len, |
| | | reinterpret_cast<jbyte *>(feature.get()->data())); |
| | | const char *sid = env->GetStringUTFChars(id, 0); |
| | | featureListMutex.lock(); |
| | | featureList.push_back({sid, feature}); |
| | | featureListMutex.unlock(); |
| | | } |
| | | }*/ |
| | | } |
| | | } catch (exception &e) { |
| | | LogUtil::log(e.what()); |
| | | } |
| | | } |
| | | |
| | | |
| | | unordered_map<string, shared_ptr<vector<unsigned char>>> tempFeatureMap; |
| | | list<pair<string, shared_ptr<vector<unsigned char>>>> tempFeatureList; |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | extern "C" JNIEXPORT jstring |
| | | JNICALL |
| | | Java_com_basic_security_utils_FaceId_compareFeatureInAllDb( |
| | | JNIEnv *env, jobject, jbyteArray featureBuffer, jint minScore) { |
| | | float score = 0; |
| | | string result = ",0"; |
| | | try { |
| | | env->GetByteArrayRegion(featureBuffer, 0, 2560, reinterpret_cast<jbyte *>(buf)); |
| | | if (!useFeatureList) { |
| | | for (auto const &featureItem : allFeatureMap) { |
| | | string id = featureItem.first; |
| | | unsigned char *data = featureItem.second.get()->data(); |
| | | printf("%s\n", id.c_str()); |
| | | score = EF_Compare(buf, data)*100; |
| | | int i = 10; |
| | | if (score >= minScore) { |
| | | result = ""; |
| | | result.append(id); |
| | | result.append(","); |
| | | result.append(to_string(score)); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } catch (exception &e) { |
| | | LogUtil::log(e.what()); |
| | | } |
| | | return env->NewStringUTF(result.c_str()); |
| | | } |
| | | |
| | | |
| | | unsigned char tempFeatureBuf[2560]; |
| | | |
| | | extern "C" JNIEXPORT jstring |