【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数
【《zw版·Halcon与delphi系列原创教程》
Halcon图层与常用绘图函数
Halcon的绘图函数,与传统编程vb、c、delphi语言完全不同,
传统编程语言,甚至cad,绘图都是直接采用line、circle函数。
Halcon,作为专业的图像处理系统,采用的是类似ps的图层、蒙版,并导入了domain(领域)的概念。
这样设计,非常专业,高效,当然,也比较复杂。
实际图像工程中,往往是结合THImagex、THWindowX(通过THOperatorSetX控件)一起使用。
此外,Halcon图像体系当中,line、circle、point,点、线、圆、矩形等等,这些基本绘图要素,都是类似对象(class、object)的模式,需要先生成,再disp到THWindowX绘图窗口。
第三点,Halcon的line、circle、point对象变量,保存的是绘图单元object,最基本的元数据,例如:坐标、尺寸,而颜色,线条粗细,往往在实际生成时,再决定。
因此,同一个object,在程序不同的地方,最终的颜色,效果是有所不同的,例如:
参见以下源码:
cir:=THRegionX.create(nil);
cir.genCircle(200,200,100); xwin.SetLineWidth(8);xwin.SetColor('blue');
cir.DispObj(xwin);
cimg:=xwin.DumpWindowImage;cimg.WriteImage('png',0,'tmp\w01.png'); xwin.SetLineWidth(2);xwin.SetColor('red');
cir.DispObj(xwin);
cimg:=xwin.DumpWindowImage;cimg.WriteImage('png',0,'tmp\w02.png');
同样一个cir对象,同样的位置,因为先后的笔画粗细、颜色不同,而最终表现不同。
第4点,Halcon的line、circle、point等基本绘图语句,颜色。笔画等参数,由THWindowX决定,类似全局变量,而不是绘图语句本身。
第5点,最终的绘图效果,需要用THWindowX控件的DumpWindowImage、或DumpWindow函数,合并到一个IHImageX类型的图像变量,类似ps的合并可见图层,再保存到图像文件,或者转换成其他图像格式,进行后续处理。
注意,变量类型必须是IHImageX类型,THImageX、IHUntypedObjectX;类型都不行
这点很奇怪,Halcon脚本自身,是无需定义变量的,类似python,而二次开发,对于变量的匹配非常严格,象这里,会有OleVariant、Variant也不能通用;
变量类型,自动匹配、容错匹配,是现代编程语言的趋势,而Halcon,在二次开发接口当中,依然采用严格的强类型匹配,除了德国人的严谨外,可能因为图像系统的复杂性,和第三方开发时的种种不确定因素。
【《zw版·delphi与halcon系列原创教程》,网址,cnblogs.com/ziwang/】
【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数的更多相关文章
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- 《zw版Halcon与delphi系列原创教程》发布说明
<zw版Halcon与delphi系列原创教程>发布说明 zw转载的<台湾nvp系列halcon-delphi教程>,虽然很多,不过基本上都是从cnc.数控角度的demo.. ...
- 《zw版·delphi与Halcon系列原创教程》THOperatorSetX版hello,zw
<zw版·delphi与Halcon系列原创教程>THOperatorSetX版hello,zw 下面介绍v3版的hello,zw. Halcon两大核心控件,THImagex.THOpe ...
- 《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版·ddelphi与halcon系列原创教程》Halcon的短板与delphi
[<zw版·delphi与Halcon系列原创教程>Halcon的短板与delphi 看过<delphi与Halcon系列>blog的网友都知道,笔者对Halcon一直是非常推 ...
- 《zw版·delphi与halcon系列原创教程》hello,zw
<zw版·delphi与halcon系列原创教程>hello,zw 按惯例,第一个程序是‘hello’ 毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版.Halco ...
- 《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函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...
随机推荐
- 如何使用批处理解决批量telnet命令的输入
用telnet命令做不了自动,因为如果成功telnet了,telnet就控制输入了.其实,不用那么麻烦,您下载一个微软官方的扫描器叫portqry,用一句for读取您文件里的ip和port,执行就行了 ...
- [LeetCode]题解(python):100 Same Tree
题目来源 https://leetcode.com/problems/same-tree/ Given two binary trees, write a function to check if t ...
- Java学习-024-获取当前类名或方法名二三文
今天,看朋友编写程序,打印日志时,需要记录当前类的类名以及当前方法的方法名,我发现 TA 将类名或者方法名直接写死在了代码中...虽说这样可以实现记录类名和方法名,但是当有特殊情况需要修改类名或者方法 ...
- 解决在VMware中安装64位系统时“此主机具有虚拟化支持能力的,但虚拟化技术被禁用”的方法
您已经配置此虚拟机使用64位客户操作系统.然而,64位操作系统不可用.此主机具有虚拟化支持能力的,但虚拟化技术被禁用.这通常是因为虚拟化技术已经在BIOS /固件设置或禁用或主机没有权限改变此设置. ...
- angularjs工程流程走不通的原因以及使用angularjs流程注意点
1 入口index.html 在这个页面中要引入一些js,也就是说无论哪个模块下的js以及css都是在index.html下引入的,而在其他非index.html的html页面中,只有div模块代码, ...
- DMV to track the temp file usage for SQLServer
There are three DMVs you can use to track tempdb usage: sys.dm_db_task_space_usagesys.dm_db_session_ ...
- notepad++的环境变量
notepad++的环境变量:当前目录:$(CURRENT_DIRECTORY) cmd /k cd /d $(CURRENT_DIRECTORY)文件名:$(NAME_PART)路径名:$(CURR ...
- notepad++代码折叠对应的树形结构快捷键
树形层次,从1开始计数 <!doctype html> <html lang="en" class="1"> <head clas ...
- 微信支付开发(3) JS API支付
由于微信支付接口更新,本文档已过期,请查看新版微信支付教程.地址 http://www.cnblogs.com/txw1958/category/624506.html 本文介绍如何使用JS API支 ...
- MVC 应用程序级别捕捉异常
捕捉异常: using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http. ...