Я уже собрал оболочку Python с помощью swig, но нужно передать переменную const *float
в функцию c ++. Так как же вызвать эту переменную? или заменить его на код Python?
Атрибуты c ++ функции get_face_feature: get_face_feature(const char* image,int img_type,const float* &feature)
Вот функция Python:
import face
import numpy as np
a = face.BaiduFaceApi()
a.sdk_init()
feature=[]
b = a.get_face_feature('1.jpg', 2,feature)
print(b)
Вот код упаковщика swig:
%module face
%{
#include "baidu_face_api.h"
%}
// %inline %{
// float *GetReference(BaiduFaceApi *api, const char* image,int
//img_type)
// {
// float *feature;
// float *&ptr = feature;
// api->get_face_feature(image, img_type, ptr);
// return ptr;
// }
// %}
%include "baidu_face_api.h"
Вот функция установки для сборки пакета python:
from distutils.core import setup,Extension
pht_module=Extension('_face',
include_dirs=['../../include/'],
library_dirs=['../../facelib/'],
libraries=['BaiduFaceApi-ubuntu16', 'FaceSDK'],
runtime_library_dirs=['../../facelib/'],
sources=['python_wrapper_wrap.cxx'],
extra_compile_args=['-O3', '-std=c++0x', '-fPIC' ],
swig_opts=['-c++'],
)
setup(name='face',
version='0.1',
author='SWIG Docs',
description='Simple wsig pht from docs',
ext_modules=[pht_module],
py_modules=['face']
)
Я уже пробовал карту типов и указатель, но безуспешно