• halcon中的面向对象,数据保存


    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,不然内存刷刷刷的涨

    专注机器视觉,halcon c# c++联合开发
  • 相关阅读:
    JDK里的设计模式
    设计模式之注册表模式
    设计模式多线程方面之Thread-Per-Message 模式
    UML类图关系大全
    记大三开学的第一个月末
    【OC加强】NSDate的使用方法——日期时间在实际开发中比較有用
    iOS 多线程开发之OperationQueue(二)NSOperation VS GCD
    Cocos2d-x Layout简单使用
    POJ 1205 Water Treatment Plants(递推)
    Troubleshooting "Global Enqueue Services Deadlock detected" (Doc ID 1443482.1)
  • 原文地址:https://www.cnblogs.com/linyugang/p/9138772.html
Copyright © 2020-2023  润新知