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

按惯例,第一个程序是‘hello’
毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版、Halcon图像版的hello程序。

首先,记得在代码文件头部的模块引用"uses",当中,加入:HALCONXLib_TLB 模块名

另外,在exe程序输出目录下,建立一个tmp子目录,这个目录是zw系列教程的统一输出目录。

下面我们输入以下代码,建立v1版的hello子程序:hello_zw01

 procedure hello_zw01();
var
ximg:THImageX;
begin
ximg := THImageX.Create(nil);
ximg.ReadImage('tmp\hello_zw.png'); ximg.writeImage('png', , 'tmp\zw01.png');
ximg.writeImage('png',, 'tmp\zw02'); FreeAndNil(ximg);
end;

源码说明:

1 ,子程序名称:hello_zw01

2-3,定义变量 ximg,类型是:THImageX;
5 ,创建ximg变量, THImageX.Create(nil);
6,读入图像文件, ximg.ReadImage('tmp\hello_zw.png');

8, 保存图像文件,方法1,ximg.writeImage('png', 0, 'tmp\zw01.png');
9 ,保存图像文件,方法2,ximg.writeImage('png',0, 'tmp\zw02');

11 ,释放ximg变量内存空间

【注意】

源码第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子目录下。

附件文件 http://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/】

《zw版·delphi与halcon系列原创教程》hello,zw的更多相关文章

  1. 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版

    <zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...

  2. 《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表

    <zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两 ...

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

    <zw版·delphi与Halcon系列原创教程>THOperatorSetX版hello,zw 下面介绍v3版的hello,zw. Halcon两大核心控件,THImagex.THOpe ...

  4. 《zw版·ddelphi与halcon系列原创教程》Halcon的短板与delphi

    [<zw版·delphi与Halcon系列原创教程>Halcon的短板与delphi 看过<delphi与Halcon系列>blog的网友都知道,笔者对Halcon一直是非常推 ...

  5. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  6. 【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数

    [<zw版·Halcon与delphi系列原创教程>Halcon图层与常用绘图函数 Halcon的绘图函数,与传统编程vb.c.delphi语言完全不同,     传统编程语言,甚至cad ...

  7. 《zw版Halcon与delphi系列原创教程》发布说明

    <zw版Halcon与delphi系列原创教程>发布说明 zw转载的<台湾nvp系列halcon-delphi教程>,虽然很多,不过基本上都是从cnc.数控角度的demo..  ...

  8. 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别

    [<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...

  9. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数·简明中文手册 总览

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数·简明中文手册 总览 Halcon函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...

随机推荐

  1. Selenium2学习-026-WebUI自动化实战实例-024-获取页面元素

    非常简单的方法封装,就不啰嗦了,直接上码咯 ^_^ /** * Get element. It will be return null when there is not such element. ...

  2. JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值

    在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...

  3. http://blog.csdn.net/foreverling/article/details/51385128

    http://blog.csdn.net/foreverling/article/details/51385128

  4. SqlServer基础:类型转换Cast和Convert

    在SqlServer要对不同类型的数据进行运算时,需要将其转换为相同类型之后再做操作,而SqlServer中有两个函数可以进行数据转换,即:Cast和Convert 1.Cast CAST(expre ...

  5. ASP.NET的运行原理与运行机制 如何:为 IIS 7.0 配置 <system.webServer> 节

    https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的 ...

  6. Python_技巧系列

    1 print()中利用 \ 实现美观 2 利用列表对多个变量进行赋值 3 变量存储的是什么 3.1 对于不可变的数据类型的值,变量存储的是引用(如:列表.字典):所以不可变变量间的赋值是引用赋值 3 ...

  7. js - ajax中的get和post说明

    转自:http://www.cnblogs.com/hateyoucode/archive/2009/12/09/1620050.html 一.谈Ajax的Get和Post的区别 Get方式:   用 ...

  8. javascript 函数参数之中的undefined(zz)

    开始看到很多js函数里都带一个undefined的参数,很是疑惑,后来查了查,原来是这样.假如我们定义了一个函数function a(){  if(arg1===undefined) alert(&q ...

  9. mysql 插入重复值 INSERT ... ON DUPLICATE KEY UPDATE

    向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求 ...

  10. G面经prepare: Chucked Palindrome

    给定一个字符串,找出最多有多少个chunked palindrome, 正常的palindrome是abccba, chunked palindrome的定义是:比如volvo, 可以把vo划分在一起 ...