当前位置:首页 > Windows程序 > 正文

《zw版delphi与Halcon系列原创教程》THOperatorSetX版hello,zw

2021-03-24 Windows程序

《zw版·delphi与Halcon系列原创教程》THOperatorSetX版hello,zw

下面在介绍v3版的hello,zw。
Halcon两大核心控件,THImagex、THOperatorSetX控件。

THImagex控件效率极高,可以视为内部数据交换模式,但与标准的Halcon函数有所差异,建议有经验的用户使用。
THOperatorSetX控件,采用类似仿真的模式,向Halcon模块提供脚本指令,由Halcon系统处理后,生成结果数据,再回传给delphi、c等开发系统。指令与Halcon完全一致,便于初学者掌握。

我们已经学过THImagex控件,现在介绍如何使用THOperatorSetX控件,编写:hello,zw
通常教程,THOperatorSetX控件,都是与THWindowX可视化控件,配合使用。
不过THWindowX需要初始化,配置,对于初学者而言,不太适合,再者,进行分析,结果主要是输出的图像文件,所有我们依然采用图像文件的模式。

全部代码如下:

1 procedure hello_zw03(); 2 var 3 xset:THOperatorSetX; 4 img,img2:IHUntypedObjectX; 5 w,h:OleVariant; 6 begin 7 xset:=THOperatorSetX.create(nil); 8 with mwin do begin 9 xset.readImage (img, tmp\hello_zw24.png); 10 xset.getImageSize (img, w, h); 11 12 xset.Rgb1ToGray(img,img2); 13 xset.writeImage(img2,png,0,tmp\hello_zw30.png) 14 end; 15 FreeAndNil(xset); 16 //FreeAndNil(img);FreeAndNil(img2); 无法释放img的内存 17 //img.Dispose();//c# 有Dispose释放方法,delphi版没有 18 end;

因为是v3版本的hello了,所以做了些增强。

【源码说明】

第10行,xset.getImageSize (img, w, h);

获取图像宽度w、高度h注意,变量w、h,必须是 OleVariant类型,Variant、integer都不行。

第12行,xset.Rgb1ToGray(img,img2);

图像变换,转换我灰度图

第16,17行,释放img变量所占内存,出错,很奇怪,所以用注释

16 //FreeAndNil(img);FreeAndNil(img2); 无法释放img的内存

17 //img.Dispose();//c# 有Dispose释放方法,delphi版没有

c、c#版图像控件有.Dispose方法,释放内存,delphi版没有,

奇怪,难道是自动释放,或者这个是delphi版内存泄露的罪魁祸首

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66838.html