日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

halcon/c++接口基础 之内存管理

發(fā)布時間:2023/12/10 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 halcon/c++接口基础 之内存管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所有的HALCON類,不僅僅HImage,HRegion,HTuple,HFramegrabber等等,還有面向過程的方法中使用的Hobject,都可以使用默認的析構器自動釋放內存。
( see also section 2.4 “Destructors and Halcon Operators”))進一步地,當再一次構造對象,比如通過已經初始化的實例(see section “Constructors and Halcon Operators)調用CreateBarCodeModel,則已經分配好的內存將自動釋放掉,然后再次重新分配。這樣,在HALCON/C++中就沒有必要調用clear_obj。另外,如果你的確調用了它,HALCON會抱怨已經釋放了內存。

然而,仍然有兩種場合需要顯式地管理內存:第一種,見2.1節(jié),string類型的輸出參數,你必須為他們顯式地分配內存。

第二種是當在面向過程的方法中調用句柄時:當創(chuàng)建一個句柄,如使用open_framegrabber內存分配,必須要在程序的末尾通過對應的算子釋放內存,如close_framegrabber.

如何結合面向對象和面向過程的代碼

正如前面說明的那樣,我們推薦盡可能地使用面向對象的編程方法。然而,由于某些原因我們使用了面向過程的方法。比如,如果你想快速整合從HDevelop導出的代碼,此種情況下,你只能通過面向過程的方法。除此之外,當前情況下,某些算子僅僅提供面向過程的方法,如創(chuàng)建仿射變換算子像vector_to_ragid。

圖像化的參數和句柄可以通過如下方式轉換:

  • 將Hobject轉換為圖形化的參數類

    Hobject p_image; read_image(&p_image, "barcode/ean13/ean1301");HImage o_image(p_image);

    圖形化的參數可以從Hobject轉換成比如HImage,只需簡單調用使用這個過程化的變量作為參數的構造函數即可。

  • 轉換句柄到句柄類

HTuple p_barcode;create_bar_code_model(HTuple(), HTuple(), &p_barcode);HBarCode o_barcode;o_barcode.SetHandle(p_barcode[0]);o_code_region = o_barcode.FindBarCode(o_image, "EAN-13", &result);

句柄不能直接通過構造函數轉換,但是,可以使用SetHandle()轉換。

  • 轉換句柄類為句柄
p_barcode = o_barcode.GetHandle();

相似地,一個句柄可以由對應的類通過GetHandle()獲得。你可以忽略這種方法,因此句柄類提供了強制轉換算子,可以自動將其轉換為句柄:

p_barcode=o_barcode;
  • 轉換圖形化參數類為Hobject
Hobject p_code_region = o_code_region.Id();

圖形化參數可以從像HRegion這樣的類轉換成Hobject,只需調用方法Id()。

  • 轉換HWindow為一個窗口句柄
long p_window;open_window(0, 0, width/2, height/2, 0, "visible", "", &p_window);HWindow o_window(0, 0, 100, 100, 0, "visible", "");p_window = o_window.WindowHandle();disp_obj(p_code_region, p_window);

與其他句柄不同,面向過程的窗口句柄不能轉換為HWindow類的對象!然而,你可以從HWindow通過WindowHandle()提取句柄。

正如章節(jié)“析構器和Halcon算子”中所說,你不能將clear_shape_model,clear_all_shape_models,or close_framegrabber和對應的句柄類一起使用。

I/O Streams

自從HALCON 7.1開始,halcon/c++不再提供輸入輸出流算子,因為一些項目想要使用舊的輸入輸出流(即他們想要使用

#include "HalconCpp.h" using namespace Halcon; #include "HIOStream.h" #if !defined(USE_IOSTREAM_H) using namespace std; #endif



總結

以上是生活随笔為你收集整理的halcon/c++接口基础 之内存管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。