使用ctypes过程中遇到的问题(一)

双指针型数据参数传递调用——动态库中的函数有双指针函数并且需要调回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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值