回覆列表
  • 1 # 機器視覺工程師

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

  • 中秋節和大豐收的關聯?
  • 鑄鐵的和鋼材的暖氣片哪種好?