zoukankan      html  css  js  c++  java
  • 【《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,'tmpw01.png');
    
    xwin.SetLineWidth(2);xwin.SetColor('red');
    cir.DispObj(xwin);
    cimg:=xwin.DumpWindowImage;cimg.WriteImage('png',0,'tmpw02.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/】

  • 相关阅读:
    【实战】一次简单的js接口漏洞挖掘
    【实战】Location 302跳转 + CRLF 场景下的XSS
    【实战】权限绕过小结
    【实战】简单的API接口FUZZ小案例
    【实战】一次有趣的逻辑漏洞挖掘
    【实战】一个简单的SQL注入绕过
    【实战】springboot actuator未授权访问之trace接口泄漏敏感信息
    【实战】springboot actuator未授权访问之heapdump敏感信息提取
    层次分析法AHP
    pyppeteer(1)
  • 原文地址:https://www.cnblogs.com/ziwang/p/4853203.html
Copyright © 2011-2022 走看看