阅读:15332回复:37
halcon在c#下的一些经验,面向对象,序列化
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,不然内存刷刷刷的涨 |
|
最新打赏:0人 |
沙发#
发布于:2018-03-03 13:02
很感兴趣,可否上传个小demo看下,没看太明白你说的意思。序列化反序列化我只在保存读取参数的时候用。
|
|
板凳#
发布于:2018-03-03 21:52
|
|
地板#
发布于:2018-03-07 21:52
我草,我已经试过了所有对象都是HObject类型了,很恐怖。
|
|
4楼#
发布于:2018-03-08 14:14
|
|
5楼#
发布于:2018-03-10 20:52
|
|
6楼#
发布于:2018-03-10 20:58
|
|
7楼#
发布于:2018-03-10 21:40
|
|
8楼#
发布于:2018-03-13 14:47
|
|
9楼#
发布于:2018-04-10 14:04
|
|
10楼#
发布于:2018-04-11 04:05
支持一下,感谢楼主的讲解
|
|
11楼#
发布于:2018-11-14 20:12
回头也试试序列化!!!!
|
|
12楼#
发布于:2018-11-26 23:14
不错不错,学习了-------
|
|
上一页
下一页