最后编辑于2018-10
用c++封装了一个标准C的离线人脸识别dll,但是调用几次识别之后就自动退出了。请官方大神旁助:
这是h文件
#pragma once #include "baidu_face_api.h" #ifdef BAIDUFACEDLL_EXPORTS #define BAIDUFACEDLL_API __declspec(dllexport) #else #define BAIDUFACEDLL_API __declspec(dllimport) #endif EXTERN_C BAIDUFACEDLL_API int Add(int a, int b); EXTERN_C BAIDUFACEDLL_API int Init(); EXTERN_C BAIDUFACEDLL_API void UnInit(); EXTERN_C BAIDUFACEDLL_API int UserAdd(const char* user_id, const char* image, char** res); EXTERN_C BAIDUFACEDLL_API int UserDelete(const char* user_id, char** res); EXTERN_C BAIDUFACEDLL_API int Identifier(const char* imgstr, char** res); EXTERN_C BAIDUFACEDLL_API int RgbLivenessCheck(const char* imgstr, char** res);
这是cpp文件
#include "stdafx.h" #include "BaiduFaceDll.h" using namespace std; static BaiduFaceApi *api; //测试程序 BAIDUFACEDLL_API int Add(int a, int b) { return a + b; } //初始化sdk //返回值 dll返回值 BAIDUFACEDLL_API int Init() { api = new BaiduFaceApi(); return api->sdk_init(); } //销毁sdk BAIDUFACEDLL_API void UnInit() { delete api; } //添加用户 //user_id 用户id,字母、数字、下划线组成,最多128个字符 //image 图片的base64值 //res 返回dll值 //返回值 1表示正常0表示异常 BAIDUFACEDLL_API int UserAdd(const char* user_id, const char* image,char** res) { try { const char* rv = api->user_add(user_id, "group_1", image, 1); strcpy(*res, rv); return 1; } catch (exception ex) { return 0; } } //删除用户 //user_id 用户id,字母、数字、下划线组成,最多128个字符 //res 返回dll值 //返回值 1表示正常0表示异常 BAIDUFACEDLL_API int UserDelete(const char* user_id, char** res) { try { const char* rv = api->user_delete(user_id, "group_1"); strcpy(*res, rv); return 1; } catch (exception ex) { return 0; } } //人脸识别 //image 图片的base64值 //res 返回dll值 //返回值 1表示正常0表示异常 BAIDUFACEDLL_API int Identifier(const char* imgstr, char** res) { try { const char* rv = api->identify(imgstr, 1, "group_1", ""); strcpy(*res, rv); return 1; } catch (exception ex) { return 0; } } //rgb活体检测 //image 图片的base64值 //res 返回dll值 //返回值 1表示正常0表示异常 BAIDUFACEDLL_API int RgbLivenessCheck(const char* imgstr, char** res) { try { const char* rv = api->rgb_liveness_check(imgstr, 1); strcpy(*res, rv); return 1; } catch (exception ex) { return 0; } }
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
掉一下堆栈看看啊
我也遇到调用几次就自动退出。怎么回事?
问题描述清楚一点,自动退出?还是有error?
也有可能是调用错误,导致库异常
你把调用代码贴一下。
我感觉问题可能出在指针越界,或者多线程同时访问api接口造成冲突。