linyugang
论坛版主
论坛版主
  • 最后登录2022-06-28
  • 发帖数184
  • 金币2975枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
阅读:15332回复:37

halcon在c#下的一些经验,面向对象,序列化

楼主#
更多 发布于:2018-03-03 08:43
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#所有对象都声明为object会怎样吧
ps:himage在这里用完要记得及时dispose,不然内存刷刷刷的涨
喜欢10

最新打赏:0人

hzfalling
技术员
技术员
  • 最后登录2022-06-27
  • 发帖数190
  • 金币857枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
沙发#
发布于:2018-03-03 13:02
很感兴趣,可否上传个小demo看下,没看太明白你说的意思。序列化反序列化我只在保存读取参数的时候用。
linyugang
论坛版主
论坛版主
  • 最后登录2022-06-28
  • 发帖数184
  • 金币2975枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
板凳#
发布于:2018-03-03 21:52
hzfalling:很感兴趣,可否上传个小demo看下,没看太明白你说的意思。序列化反序列化我只在保存读取参数的时候用。回到原帖
我也只是在保存读取时候使用,我这样可以直接对HBarCode 等模型序列化,而不是其handle
756191531
初学者
初学者
  • 最后登录2022-06-29
  • 发帖数84
  • 金币25枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2018-03-07 21:52
我草,我已经试过了所有对象都是HObject类型了,很恐怖。
linyugang
论坛版主
论坛版主
  • 最后登录2022-06-28
  • 发帖数184
  • 金币2975枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
4楼#
发布于:2018-03-08 14:14
756191531:我草,我已经试过了所有对象都是HObject类型了,很恐怖。回到原帖
图像对象的基类都是hobject
756191531
初学者
初学者
  • 最后登录2022-06-29
  • 发帖数84
  • 金币25枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2018-03-10 20:52
linyugang:图像对象的基类都是hobject回到原帖
序列化的时候,HRegion要用Hregion格式,反序列化的时候要用HObject格式才行啊?
756191531
初学者
初学者
  • 最后登录2022-06-29
  • 发帖数84
  • 金币25枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2018-03-10 20:58
756191531:序列化的时候,HRegion要用Hregion格式,反序列化的时候要用HObject格式才行啊?回到原帖
我擦,不对,是我程序有问题。
756191531
初学者
初学者
  • 最后登录2022-06-29
  • 发帖数84
  • 金币25枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2018-03-10 21:40
756191531:我擦,不对,是我程序有问题。回到原帖
忘了加SetSystem
linyugang
论坛版主
论坛版主
  • 最后登录2022-06-28
  • 发帖数184
  • 金币2975枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
8楼#
发布于:2018-03-13 14:47
756191531:忘了加SetSystem回到原帖
这个不用set system吧?自定义类直接反序列化为自定义的类,然后内部hregion不会改变啊
linyugang
论坛版主
论坛版主
  • 最后登录2022-06-28
  • 发帖数184
  • 金币2975枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
9楼#
发布于:2018-04-10 14:04
756191531:忘了加SetSystem回到原帖
嗯,region反序列化之前要设置region裁剪取消,我之前也疏忽这个问题了
lihui432
高级工程师
高级工程师
  • 最后登录2022-07-02
  • 发帖数143
  • 金币9777枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2018-04-11 04:05
支持一下,感谢楼主的讲解
xixiyinhang
技术员
技术员
  • 最后登录2022-05-22
  • 发帖数138
  • 金币193枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
11楼#
发布于:2018-11-14 20:12
回头也试试序列化!!!!
wxf8820279
初学者
初学者
  • 最后登录2021-05-10
  • 发帖数15
  • 金币10枚
  • 贡献勋章0枚
  • 社区居民
12楼#
发布于:2018-11-26 23:14
不错不错,学习了-------
daihui
助理工程师
助理工程师
  • 最后登录2022-07-01
  • 发帖数546
  • 金币1230枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
13楼#
发布于:2019-01-10 17:50
支持一下,感谢楼主的讲解
Loop12
初学者
初学者
  • 最后登录2022-06-29
  • 发帖数82
  • 金币13枚
  • 贡献勋章0枚
14楼#
发布于:2019-05-08 14:46
学习了每天进步一点点
上一页
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服