1. 程式人生 > >halcon 外部函式如:disp_message()等外部函式在遇到多個hv_ExpDefaultWinHandle情況下出現呼叫不正常/錯誤的情況

halcon 外部函式如:disp_message()等外部函式在遇到多個hv_ExpDefaultWinHandle情況下出現呼叫不正常/錯誤的情況

最近在做有關工業相機的手眼標定的專案,在HALCON中匯出了相機標定的C#格式程式碼,所用到的halcon例項名稱為:calibrate_cameras_monocular.cs。

想實現標定影象和對應的3D場景分別顯示在一個halconwindow中,如下圖所示:

但是在使用halcon外部函式,如disp_message()函式的時候發現,即便是我定義了兩個控制代碼,並且將控制代碼作為引數傳入到了disp_message(),但是沒有得到預期的效果,上面的兩行字沒有分別顯示在兩個影象顯示區域內,而是擠到了左邊這個影象框中,如下圖所示:

後面檢視disp_message()這個函式的實現才發現問題。

這個函式的第一個引數是顯示影象的視窗的控制代碼,函式第一個形參是hv_WindowHandle,傳進來的實參是hv_ExpDefaultWinHandle,但是通篇看下來,這個形參居然沒有在下面的函式實現部分出現一次,也就是說,實參傳給形參的引數根本就沒有用到,倒是實參hv_ExpDefaultWinHandle在裡面出現了,這個實參對應的是左邊顯示視窗的控制代碼,因此,不論你傳入進來的是hv_ExpDefaultWinHandle2,還是hv_ExpDefaultWinHandle3,還是hv_ExpDefaultWinHandle4。。。你想要顯示的text都會出現在左邊的這個視窗,準確地說,會出現在控制代碼為hv_ExpDefaultWinHandle的視窗中。

解決的辦法,將hv_ExpDefaultWinHandle替換成形參hv_WindowHandle,這樣,傳入進來的實參才會起作用。

怎麼說,感覺被halcon給坑了,匯出來的程式怎麼會出現這種低階錯誤?

另外,在set_display_font()函式裡面也發現了同樣的問題,傳入的實參根本就沒有起作用!

今天記下來,防止後面再落入相同的坑!