【《zw版·delphi与Halcon系列原创教程》
Halcon的短板与delphi

看过《delphi与Halcon系列》blog的网友都知道,笔者对Halcon一直是非常推崇的,简直是天下第一,无所不能。
     的确,Halcon是目前蓝星上最强的图像库,也许某些国家军用卫星的图像库,精度会高一点,这个只能猜测。
     Halcon毕竟只是图像库而已,作为开发平台,与专业的delphi、vs相比,还是有很大差距的。
      有经验的用户,特别是从事二次开发的外包团队,采用Halcon。有时总会有些束手束脚,力不从心的感觉,而且,问题往往不是出现在技术瓶颈,而是一些简单、常用的细节上面。
      Halcon第一定位,始终是图像工程方面,提供一站式解决方案,这点,无疑是行业第一。
      具体而言,作为平台级的图像开发工具,Halcon存在以下问题:

  • :: HDevelop对于用户自定义变量支持很差,赋值只能采用专用的assign函数,不支持左侧等号‘=’模式,做过解释器、编译系统的人都知道,左侧等号‘=’赋值,看起来简单,其实非常复杂繁琐,变化万千。Halcon很聪明,采用了delphi的独特的双字符':=',作为等号,大大简化了内核相关模块的开发。这些,对于偏重于工程定位Halcon,影响不大,不过对于大型图像系统,不仅代码量增加不少,架构设计也复杂很多。
  • :: HDevelop本身对于多个模块、大型的图像应用,支持很差,v12官方Change明确指出,Halcon,对于大型的定义是‘500’行代码。500行?Halcon一个delphi的接口程序,源码就超过7w行,500行显然是无法完成一个复杂系统的。
  • :: Halcon虽然提供了com、net控件,支持c、vb、delphi等二次开发,但对于最简单方便,与内置脚本天生一体的delphi,却支持最差,不仅输出代码,没有delphi格式,连文档、demo方面,都尽量简化,官方貌似只提供了一个Matching示例程序,就万事大吉了。
  • :: bug、调试,非常麻烦,连免费的python都比不上,更不用说专业的delphi、vs了,当然对于500行内的‘一对一’应用模块而言,这些还可以接受。
  • :: 页面窗口布局,类似matlab,当然图像系统,本身布局极其复杂,matlab、ps、cad、maya、blender,3ds,各自不同,不过,Hacon还在采用delphi7时代的多窗口模式,而不是现代的dock设计,这点就有些反人类了,matlab很像在v2010版以前,就改成了dock模式。(附图,是笔者推荐的HDevelop窗口布局)


     不过,Halcon的这些短板,刚好是delphi、c+vs的强项,双方互补性非常强。
     实际工程设计当中,往往把Halcon作为刀锋,处理专业的技术难点、瓶颈,而delphi作为整个系统架构的设计、数据的维护等等。
      所以,delphi与Halcon,的确是图像工程的神级搭配。

【《zw版·delphi与halcon系列原创教程》,网址,cnblogs.com/ziwang/】

《zw版·ddelphi与halcon系列原创教程》Halcon的短板与delphi的更多相关文章

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

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

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

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

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

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

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

    <zw版·delphi与halcon系列原创教程>hello,zw 按惯例,第一个程序是‘hello’ 毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版.Halco ...

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

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

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

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

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

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

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

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

  9. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

随机推荐

  1. Payoneer欧洲收款账户开通激活及使用-用于接收欧洲公司资金和欧元收款

    在亚马逊国际平台的卖家往往会被问道需要美国(或者欧洲或者日本等)银行账户才能收款,这个政策个人认为是亚马逊对当地卖家的保护政策(大量的中国低价物美的卖家涌入会导致当地的卖家没有优势),二是当地税收政策 ...

  2. 【python】numpy array特殊数据统一处理

    array中的某些数据坏掉,想要统一处理,找到了这个方法,做个笔记. 比如,把数组中所有小于0的数字置为0 import numpy as np t = np.array([-2, -1, 0, 1, ...

  3. Fiddler-002-常用配置修改

    日常在应用 Fiddler 进行网络抓包时,有时需要查看服务器的类型或者其他信息,此文主要讲述实际应用中针对 Fiddler 进行的定制化配置,以方便日常的工作学习. 第一:显示服务器的类型和请求域名 ...

  4. saltstack之(一)系统环境及本地yum源

    1.服务器环境node1:192.168.3.1node2:192.168.3.2 2.主机名和hosts文件node1: node1.xkops.com --主机名[root@node1 ~]# t ...

  5. 配置文件后面的rc的由来

    配置文件后面的rc的由来 配置文件比较正规的叫法是:运行控制文件  run control Linux就这个范儿 4.5.3 配置文件 配置文件比较文绉绉的称呼是“运行控制文件”,存放与具体程序相关的 ...

  6. 30天,APP创业从0到1【7.26苏州站】

    活动概况 时间:2015年7月26日13:30-16:30 地点:创客巢(苏州吴中区玉山路646号金枫广告产业园B栋4楼) 主办:APICloud.融云.鱼多多 网址:www.apicloud.com ...

  7. Spring Boot 3 Hibernate

    JdbcTemplate Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTemplate ...

  8. linux设备模型_转

    建议原博文查看,效果更佳. 转自:http://www.cnblogs.com/wwang/category/269350.html Linux设备模型 (1) 随着计算机的周边外设越来越丰富,设备管 ...

  9. windows 64位 dll文件 位置及python包rtree shapely安装

    位置 \Windows\System32 python包依赖包安装 rtree 依赖 spatialindex(spatialindex.dll   spatialindex_c.dll) shape ...

  10. java获取泛型的真实类型

    ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass(); Type[] actualTyp ...