之前写的面向对象及数据保存可能有些东西没有说的很清楚,导致有网友咨询为什么保存失败,
先看看为什么失败.
[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打开后的路径地址复制到谷歌浏览器或者类似浏览器,并使用谷歌翻译,将离线帮助可以直接翻译成中文,格式什么都不会变化.