正常情况下Python是可以调用C++接口的,但是halcon中的数据结构是自定义类型,Python的基类型没有定义, 不过可以尝试中间层转换。
1. Python调用C++接口方法
比如有接口动态库myHalcon.dll
封装了两个接口
DLLEXPORT int sum(int a, int b) { return a + b; }
DLLEXPORT int sub(int a, int b) { return a-b; }
import ctypes
import os
CUR_PATH=os.path.dirname(__file__)
dllPath=os.path.join(CUR_PATH,"myHalcon.dll")
print (dllPath)
#mydll=ctypes.cdll.LoadLibrary(dllPath)
#print mydll
pDll=ctypes.WinDLL(dllPath)
print (pDll)
pResutl= pDll.sum(1,4)
pResult2=pDll.sub(1,4)
print (pResutl) print (pResult2)
好,有了以上知识,Python调用C++的接口,那么接下来可以使用自定义一个halcon动态库
UseHalconByPyhon.dll
数据类型对应好,比如:
类型 halcon UseHalconByPyhon
图像数据 HObject struct{unsighed char*pdata,int width, int height,int type}
int HTuple int
double HTuple double
string HTuple stirng
通过自定义接口,一一做对应接口参数,自己转换一层就可以了。
如下表中,数据,一一来做对应, halcon->C->python这个过程
上面这个只是通过python可以调用C++接口而想到的,这样做比较麻烦(我自己没有测试过)