《zw版·delphi与halcon系列原创教程》hello,zw
《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的更多相关文章
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表
<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两 ...
- 《zw版·delphi与Halcon系列原创教程》THOperatorSetX版hello,zw
<zw版·delphi与Halcon系列原创教程>THOperatorSetX版hello,zw 下面介绍v3版的hello,zw. Halcon两大核心控件,THImagex.THOpe ...
- 《zw版·ddelphi与halcon系列原创教程》Halcon的短板与delphi
[<zw版·delphi与Halcon系列原创教程>Halcon的短板与delphi 看过<delphi与Halcon系列>blog的网友都知道,笔者对Halcon一直是非常推 ...
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
- 【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数
[<zw版·Halcon与delphi系列原创教程>Halcon图层与常用绘图函数 Halcon的绘图函数,与传统编程vb.c.delphi语言完全不同, 传统编程语言,甚至cad ...
- 《zw版Halcon与delphi系列原创教程》发布说明
<zw版Halcon与delphi系列原创教程>发布说明 zw转载的<台湾nvp系列halcon-delphi教程>,虽然很多,不过基本上都是从cnc.数控角度的demo.. ...
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数·简明中文手册 总览
<zw版·Halcon-delphi系列原创教程> Halcon分类函数·简明中文手册 总览 Halcon函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...
随机推荐
- 深入理解Linux中内存管理
前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...
- Selenium2学习-006-WebUI自动化实战实例-004-解决 Chrome 浏览器证书提示:--ignore-certificate-errors
此文主要讲述 Java 运行 Selenium 脚本时,如何消除 Chrome 浏览器启动后显示的证书错误报警提示,附带 Chrome 参数使浏览器最大化的参数. 希望能对初学 Selenium2 W ...
- APICloud请你看英特尔智能硬件大赛决赛直播
英特尔智能硬件大赛由英特尔硬享公社(CCE)发起,联合了全国各地50余家产业链优秀合作伙伴,旨在集合全国硬创资源,携手寻找中国最具代表性的硬件创业项目,并通过技术支持.资源对接.产品推广等方式助力项目 ...
- Metro中控件WebView访问外部的网页显示一片空白
Metro中控件WebView访问外部的网页显示一片空白 解决方案: 下载安装了Initex.Software.Proxifier.v3.21.Standard.Edition.Incl.Keyma ...
- C#高级编程 反射 代码示例
反射 反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等. 还可以获得每 ...
- SLAM学习笔记(1)基本概念
SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建 ...
- iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)
// // ViewController.swift // Swift-Array // // Created by luorende on 16/9/12. // Copyright © 2016年 ...
- LinkedHashMap 和 LRU算法实现
个人觉得LinkedHashMap 存在的意义就是为了实现 LRU 算法. public class LinkedHashMap<K,V> extends HashMap<K,V&g ...
- JDK JVM
- [原创] 分享一些linux教程
书<鸟哥的linux私房菜第三版>,链接:http://pan.baidu.com/s/1i3femnr 配套视频,链接:http://pan.baidu.com/s/1v72xw --- ...