halcon異常情況彙總

一、VS下不易發現的內存泄露

       在VS下調用Halcon算子時,要特別注意:所有輸出的變量,不管有沒有用到,都不要用NULL來替代。否則會導致程序會有2-4kb的內存泄露。(Halcon12及以前版本均存在這個問題,最新的版本是否存在有待驗證)

  例如,我們需要計算某個區域的面積,而不關心另兩個一併計算得出的中心點座標,可能會這樣寫:

1

2

HTuple  hv_Area;

AreaCenter(ho_Region, &hv_Area, NULL, NULL);

 這種方式會導致程序會有2-4kb的內存泄露,是不可取的,正確的方式如下:

1

2

HTuple  hv_Area,hv_Row,hv_Column;

AreaCenter(ho_Region, &hv_Area, &hv_Row, &hv_Column);

 二、關於模板匹配的分值設置

       舉個例子,在用find_shape_model尋找定位核時,設置分值是0.5,沒有找到該定位核。降低該分值(如設成0.4),找到了,但是對應的匹配分值是大於0.5的?(Halcon17.12一直到Halcon18.11一直存在)

       也許是halcon自身的bug,也許是計算匹配分值的邏輯不太一樣。目前做法是:把分值設置的低一些,找到後再按照偏高點的分值進行過濾

三、二維碼識別異常崩潰,電腦會卡死

      一般如果是圖像質量有問題等原因導致的二維碼沒有識別出結果,哪怕設置了最大超時時間,也會導致程序甚至電腦卡死。當然這個是halcon12及以前存在的問題。

       Halcon18已經解決了該問題!!!

四、同一張圖,運行多次後檢測結果可能會不一樣的異常問題

      這種情況僅在現場工控機運行時出現過,自己筆記本電腦無法復現。初步可以確定爲LocalThreshold算子導致的,輸入爲reduce_domain得到的圖像,若裏面的感興趣區域中,有低於LocalThreshold中的Mask尺寸,可能會導致該異常!

五、GenMeasureRectangle2 創建的測量矩,不能超過圖像的邊界,如果超過的,當時不出問題,運行五分鐘左右就會有異常,後續執行和測量矩相關的操作均會異常

      //SetFuzzyMeasure(gray)運行多次會出異常,原因不明

六、tile_images_offset()算子太耗時

       halcon18.05依然是這個現象,無論是圖像橫向拼圖還是縱向拼圖,都比較耗時,還不如自己內存拷貝效率高。(另外,哪怕是縱向拼圖,如果圖像高度是4的倍數的話,效率也要高些,不是特別理解,暫時沒有充分驗證)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章