halcon中的物件導向,資料儲存

2022-05-17 21:03:38 字數 1024 閱讀 6524

halcon運算元支援各種程式語言,但是最終都是呼叫halcon.dll中的函式,題主主要使用c#語言,就說下halcon在c#中的那些事吧,

舉例說明,對於條碼,halcon的htool介面下提供了hbarcode模型類,不少人是在halcon開發環境中匯出運算元並沒有直接使用這個模型,使用格式如下

hoperatorset.findbarcode(findimage,out obj, handle, codetype, out coderesult);

其中的handle是乙個htuple,實際是hbarcode模型的控制代碼,程式寫到這裡除錯估計都沒問題了,接下來該儲存資料了,這裡直接儲存這個handle沒用,可以使writebarcodemodel來講模型儲存到檔案中.或者用serialize運算元存到資料流中統一儲存,

以上兩種方式都需要單獨編寫程式來儲存資料,由於c#提供方便的序列化方式,可以將類直接序列化,這就大大減少了自己編寫儲存程式出現的bug,還可以將整個工程檔案儲存為乙個序列化物件,具體應該怎麼做呢?

宣告物件時候,工具字段 必須直接使用

hbarcode barcodetool = new hbarcode();

這種方式來宣告,這樣就序列化時候會自動呼叫模型的序列化運算元,使用時候物件導向和面向過程都可以,

hoperatorset.findbarcode(findimage,out obj, barcodetool.handle, codetype, out

coderesult);

barcoderegion = barcodetool.findbarcode(findimage, codetype, out coderesult);

建議還是使用第二種物件導向的程式設計方式,這樣更簡潔.是region就宣告hregion,是image就宣告himage,不要全都弄成hobject,c#的強制型別會幫我們檢查出一些低階錯誤,

想想c#所有物件都宣告為object會怎樣吧

ps:himage在這裡用完要記得及時dispose,不然記憶體刷刷刷的漲

物件導向中

出現封裝的原因 我們需要一種方式來增強資料的安全性 屬性不能隨意修改 屬性不能改為任意的值 封裝是物件導向的三大特性之一 封裝是指隱藏物件中一些不希望被外部所訪問到的屬性或方法 我們也可以提供給乙個getter 和setter 方法是外部可以訪問到屬性 getter 獲取物件中指定的屬性 sette...

物件導向中

形如 開頭 結尾的這類方法統稱為魔法方法 1.init self 定義類中屬性的特殊方法,當進行例項化物件時會自動呼叫該方法初始化該方法中的屬性。語法 def init self,name,age self.name name self.age age2.str self 在類中定義了該方法,當進行...

物件導向 物件中的繼承

繼承 通過 某一種方式 讓乙個物件,可以訪問並使用到另乙個物件中的內容 這種行為我們叫做繼承 繼承的方式 建構函式繼承 類式繼承 直接給原型賦值乙個物件,可以簡化批量賦值。但,等於重構了原型 重構原型時,需要手動建立constructor 建構函式。否則原型的指向鏈條會斷 建構函式 function...