之前寫的面向對象及數據保存可能有些東西沒有說的很清楚,導致有網友咨詢為什么保存失敗,
先看看為什么失敗.
[Serializable] public class Test { private HTuple hv_ModelID = null; public HTuple Hv_ModelID { get { return hv_ModelID; } set { hv_ModelID = value; } } }
上面是對於一個ncc模板測試類,聲明的是hv_ModelID作為模板句柄,保存此句柄再次打開發現無法進行查找,句柄只是一個指針,指向之前創建模板的位置,記錄這個位置是不行的,那么實際應該怎么做呢?
創建模板當然首先在halcon開發環境中輸入
create_ncc_model (, 'auto', -0.39, 0.79, 'auto', 'use_polarity', ModelID)
然后使用f1幫助跳出幫助界面
使用.net,當然要看看.net咋弄了
發下上面的就是模型的構造函數,聲明對象就應該是HNCCModel,之前的測試代碼就應該是
[Serializable] public class Test { private HNCCModel nccModel = null; public HNCCModel NccModel { get { return nccModel ; } set { nccModel = value; } } }
這樣序列化此類就直接保存了模板,當然序列化之前還應該檢查下是否真的已經初始化了,
if (nccModel != null && nccModel.IsInitialized() == false) { nccModel = null; }
還有小伙伴可能會說我英語不好咋辦,f1我也看不懂啊,現在的翻譯軟件已經做的很好了,將f1打開后的路徑地址復制到谷歌瀏覽器或者類似瀏覽器,並使用谷歌翻譯,將離線幫助可以直接翻譯成中文,格式什么都不會變化.