双指针型数据参数传递调用——动态库中的函数有双指针函数并且需要调回python使用
动态库中的函数,头文件:
double IRISDT_API IrisDetectProcess(const char* imgPath, const char* modelPath, int dtThre,
int* pWinSize, int* pWinStep, int** allBoxs, int** boxNums, int* imgFilesNum);
在pyrhon中调用函数之前的声明,双指针要写两个POINTER:
library.IrisDetectProcess.argtypes = [c_char_p, c_char_p, c_int, POINTER(c_int), POINTER(c_int),
POINTER(POINTER(c_int)),
POINTER(POINTER(c_int)), POINTER(c_int)]
library.IrisDetectProcess.restype = c_double
重点在POINTER(POINTER(c_int)), POINTER(POINTER(c_int))
python中参数的初始值设置,双指针赋值要加POINTER
allBoxshandle = POINTER(c_int)()
boxNums = POINTER(c_int)()
传参形式,双指针传参加pointer():
result = library.IrisDetectProcess(imgpath, moudle_path, dtThre, pWinSize, pWinStep,
pointer(allBoxshandle),
pointer(boxNums),
pointer(imgFilesNum))
这样就可以在后续使用了
其中restype没有s