# MNN1.0.0+opencv3.x # CMakeLists cmake_minimum_required(VERSION 3.10) project(main) set(CMAKE_CXX_STANDARD 11) find_package(OpenCV REQUIRED) set(MNN_DIR ***) // MNN路径 include_directories(${MNN_DIR}/include) link_directories(${MNN_DIR}/build) include_directories(***/face_recognize_mnn/include) // 当前项目include路径 aux_source_directory(***/face_recognize_mnn/tools ALL_TOOLS) // source cpp文件路径 add_executable(main main.cpp facecomparison.cpp ${ALL_TOOLS}) target_link_libraries(main -lMNN ${OpenCV_LIBS}) # 信息结构体 struct OutputInfo{ int error_code; bool result; }; struct InitModelError{ vector<bool> init_error; }; # 模型初始化 InitModelError init_model_code; FaceComparison face_rec = FaceComparison(); bool init_model = face_rec.init_model(face_det_model,face_landm_model,face_rec_model,init_model_code); det_model_path:人脸检测模型retinaface的模型路径 landm_model_path:106人脸关键点模型的模型路径 rec_model_path:人脸识别模型的模型路径 init_model_code:保存每个模型初始化状态true/false # 重要参数(include/facecomparison.h文件) // 人脸检测阈值 float confidence_threshold = 0.5; // 是否进行人脸外廓 bool is_bbox_process = true; // 人脸比对相似度阈值 float face_recongnize_thr = 0.5; // 线程个数 int num_thread = 2; // 推理方式 MNNForwardType forward_type = MNN_FORWARD_CPU; # 接口(返回结果 bool:true/false) int inference(string image_path1,string image_path2,OutputInfo &output_info);参数为两张图像地址,其中iamge1_path为face_id图像输入 int inference(Mat image1,Mat image2,OutputInfo &output_info);参数为两张opencv读取的图像矩阵,其中iamge1为face_id图像输入 # 调用方式 OutputInfo output_info; int result = face_rec.inference(image1,image2,output_info); # 编译 将CMakeLists.txt 中 set(FACECOMPARISON_DIR /home/situ/qfs/sdk_project/mnn_projects/face_recognize_mnn/include) 改为include文件夹所在的绝对地址 mkdir build cd build cmake .. make ./main