Fork me on Gitee

halcon中的面向对象,数据保存(续)

之前写的面向对象及数据保存可能有些东西没有说的很清楚,导致有网友咨询为什么保存失败,

先看看为什么失败.

   [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打开后的路径地址复制到谷歌浏览器或者类似浏览器,并使用谷歌翻译,将离线帮助可以直接翻译成中文,格式什么都不会变化.

 

posted @ 2018-06-11 08:48  linyugang  阅读(2871)  评论(0编辑  收藏  举报