最后编辑于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接口造成冲突。