在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
《zw版·delphi与halcon系列原创教程》hello,zw 按惯例,第一个程序是‘hello’ 另外,在exe程序输出目录下,建立一个tmp子目录,这个目录是zw系列教程的统一输出目录。
1 procedure hello_zw01(); 2 var 3 ximg:THImageX; 4 begin 5 ximg := THImageX.Create(nil); 6 ximg.ReadImage('tmp\hello_zw.png'); 7 8 ximg.writeImage('png', 0, 'tmp\zw01.png'); 9 ximg.writeImage('png',0, 'tmp\zw02'); 10 11 FreeAndNil(ximg); 12 end;
源码说明: 1 ,子程序名称:hello_zw01 2-3,定义变量 ximg,类型是:THImageX; 8, 保存图像文件,方法1,ximg.writeImage('png', 0, 'tmp\zw01.png'); 【注意】 源码第6行,读入图像文件, ximg.ReadImage('tmp\hello_zw.png'); delphi版,与Halcon内置脚本、c、c#等版本语句有所不同:read_image(imgNam,ImageFileName) Halcon内置脚本、c、c#版,‘图像读入’语句,带有下划线; 另外,函数参数变量有两个,第一个imgNam,是图像文件载入后的内部变量名;第2个变量,ImageFileName,才是文件名
源码第8行,第9行,都是‘图像保存’语句:WriteImage 根据接口文件:HALCONXLib_TLB.pas源码,定义如下: procedure WriteImage(const Format: WideString; FillColor: OleVariant; FileName: OleVariant); safecall; 变量说明: Format,输出文件格式 FillColor,填充颜色,一般为0 FileName,输出文件名 因为,Halcon在‘图像保存’语句:WriteImage当中,定义了图像格式,所以保存图像文件时,文件名可以省略后缀名称。 源码第9行: ximg.writeImage('png',0, 'tmp\zw02');
ok,现在运行v1版,奇怪,居然出错,
运行记得下载,并使用本文附带的配套图片文件,复制到tmp子目录下。 附件文件 https://files.cnblogs.com/files/ziwang/hello_zw_pic.zip 因为我们 的图像文件:tmp\hello_zw.png,是32位的,带alpha通道,与Halcon内部的有所不同。 这点,在Halcon手册里面有特别说明,尤其是在使用c、c#、delphi进行控件模式开发时。 你可以用photoshop,或者xnview等软件,取消图像的alpha通道,按24位保存,就可以了。 现在我们修改源码第9行,改为 ximg.ReadImage('tmp\hello_zw24.png'); 图像文件:hello_zw24.png,是24位格式的,再次运行 ok,顺利执行,用xnview等看图软件,浏览tmp目录,会发现除:tmp\hello_zw.png,tmp\hello_zw24.png,两个原文件外 多了两个新的图像文件:tmp\zw01.png、tmp\zw02.png
【《zw版·delphi与halcon系列原创教程》,网址,cnblogs.com/ziwang/】 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论