正常情況下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++介面而想到的,這樣做比較麻煩(我自己沒有測試過)
正常情況下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++介面而想到的,這樣做比較麻煩(我自己沒有測試過)