一个ball例程带你进入 Halcon 世界

* 此例程来自halcon自带例程,请打开 halcon-》ctrl+E 打开例程-》搜索框中输入ball added by xiejl* ball.hdev: Inspection of Ball Bonding
*
dev_update_window (‘off‘)
dev_close_window ()
dev_open_window (0, 0, 728, 512, ‘black‘, WindowID)
read_image (Bond, ‘die/die_03‘)
dev_display (Bond)
set_display_font (WindowID, 14, ‘mono‘, ‘true‘, ‘false‘)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
threshold (Bond, Bright, 100, 255)
shape_trans (Bright, Die, ‘rectangle2‘)
dev_set_color (‘green‘)
dev_set_line_width (3)
dev_set_draw (‘margin‘)
dev_display (Die)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
reduce_domain (Bond, Die, DieGrey)
threshold (DieGrey, Wires, 0, 50)
fill_up_shape (Wires, WiresFilled, ‘area‘, 1, 100)
dev_display (Bond)
dev_set_draw (‘fill‘)
dev_set_color (‘red‘)
dev_display (WiresFilled)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
opening_circle (WiresFilled, Balls, 15.5)
dev_set_color (‘green‘)
dev_display (Balls)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
connection (Balls, SingleBalls)
select_shape (SingleBalls, IntermediateBalls, ‘circularity‘, ‘and‘, 0.85, 1.0)
sort_region (IntermediateBalls, FinalBalls, ‘first_point‘, ‘true‘, ‘column‘)
dev_display (Bond)
dev_set_colored (12)
dev_display (FinalBalls)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
smallest_circle (FinalBalls, Row, Column, Radius)
NumBalls := |Radius|
Diameter := 2*Radius
meanDiameter := sum(Diameter)/NumBalls
mimDiameter := min(Diameter)
dev_display (Bond)
disp_circle (WindowID, Row, Column, Radius)
dev_set_color (‘white‘)
for i := 1 to NumBalls by 1
    if (fmod(i,2)=1)
        disp_message (WindowID, ‘D: ‘+Diameter[i-1], ‘image‘, Row[i-1]-2.7*Radius[i-1], max([Column[i-1]-60,0]), ‘white‘, ‘false‘)
    else
        disp_message (WindowID, ‘D: ‘+Diameter[i-1], ‘image‘, Row[i-1]+1.2*Radius[i-1], max([Column[i-1]-60,0]), ‘white‘, ‘false‘)
    endif
endfor
* dump_window (WindowID, ‘tiff_rgb‘, ‘./ball‘)
dev_set_color (‘green‘)
dev_update_window (‘on‘)
disp_continue_message (WindowID, ‘black‘, ‘true‘)
stop ()
dev_close_window ()

  可以看到 图像的处理就是红色之外的代码,没有几句。

  先来看看红色部分的代码:

  dev_update_window:帮助文档上是这么说的---此算子决定 所有由其他某一个算子返回的所有图形对象是否显示在活动的图形窗口之上(‘on‘为默认参数,代表打开此更新,‘off‘表示关闭此更新,所有更新由我们手动打开)。参数的选择对于我们输出对象在某一单步执行时是没有影响的,执行之后,图形输出对象依然可以显示在活动的图形窗口之上。参数选择应该被置为‘off‘,只有在我们选择的图形对象应该被显示在图形窗口之上时,我们应该手动调用算子:dev_display算子显示此对象(包括 image, xld, region等其他图形对象)。理解了吗?呵呵

  dev_close_window:这是halcon中比较简单的内部函数,就是将图形显示窗口关闭。当然我们可以通过HDevelop的菜单栏-》窗口-》打开图形窗口,打开多个图形窗口。

  dev_open_window:这没什么好说的,就是将上面关闭的图形窗口重新打开。

  dev_display:如果我们通过调用dev_update_window(’off‘)语句,关闭窗口的更新,我们必须手动调用dev_display()内部操作来显示对象(比如imag,region,xld等其他图形对象)。

  stop: 这是应该是halcon中最简单的语句了,相当于C中的system("pause"),让程序暂停执行,此时我们可以通过观察变量窗口(显示图形变量及控制变量),调试程序等。

  dev_set_color: 在讲这句的意义之前,我们可以通过HDevelop的菜单栏-》可视化-》颜色  来达到与此句相同的效果,这可能会帮助你理解dev_set_color的意义,其实就是设置图形显示窗口中图形(image,region,xld等)的图像显示颜色。此内部操作和下面讲到的dev_set_colored相辅相成。调试非常有用。

  dev_set_colored:和上面一样,我们可以通过HDevelop的菜单栏-》可视化-》彩色数量  来达到与此句相同的效果。在我们调试程序时,通过connection算子处理后,求取region的连通域,将region分成各不同的region块,即可以通过此功能完成对各region着不同的颜色,方便我们调试、观察。

  dev_set_line_width:和上面一样,可以通过HDevelop的菜单栏-》可视化-》线宽来设置线条的宽度,调试用,比如观察xld时。

  dev_continue_message:在图形窗口上显示继续信息

  Halcon的内部操作暂时讲这么多。至于算子和外部函数稍的再讲 by xiejl

 

一个ball例程带你进入 Halcon 世界

时间: 2024-10-13 00:07:21

一个ball例程带你进入 Halcon 世界的相关文章

小心公共wifi 之小白客带你走进黑客世界:kali linux下的无线攻击技术

本文标签: 黑客世界 wifi安全 无线攻击技术 公共wifi不安全 kali+linux 原文地址:http://whosmall.com/?post=460 我们常说公共wifi不安全,那么到底不安全在哪些地方呢?当不怀好意者和你同在一个wifi下,你的手机或者笔记本会被监听吗?除了上网被监视以外,还会产生什么不好的后果?介于小伙伴们对于wifi这一块比较感兴趣,在这篇文章里,就先为大家普及一下在公共wifi下究竟有多危险. 实验环境 一台装有kali linux的笔记本(模拟攻击者)ip地

AngulaJS实战总结, 带你进入AngularJS世界(待续)

AngulaJS实战总结, 带你进入AngularJS世界(待续) 使用AngularJS  进行Hybrid App 开发已经有一年多时间了,这里做一个总结. 一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM.2.浏览器载入angular.js脚本.3.AngularJS等到DOMContentLoaded事件触发.4.AngularJS寻找ng-app指令,这个指令指示了应用的边界.5.使用ng-app中指定的模块来配置注入器($injector).6.注

带你走进虚拟化世界之kvm(转载)

http://chuck.blog.51cto.com/10232880/1720953 带你走进虚拟化世界之kvm 2015-12-08 23:10:46 标签:云计算 虚拟化 kvm 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chuck.blog.51cto.com/10232880/1720953 一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算

带你走进虚拟化世界之KVM

带你走进虚拟化世界之KVM 一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1 云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2 在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)vps:虚拟专

zw版【转发·台湾nvp系列Delphi例程】.NET调用HALCON COM控件内存释放模式

zw版[转发·台湾nvp系列Delphi例程].NET调用HALCON COM控件内存释放模式 ------------------------------------方法一 :Imports System.Runtime.InteropServices Marshal.ReleaseComObject(COM物件)COM 物件 = Nothing 方法二 :COM 物件 = NothingGC.Collect()GC.WaitForPendingFinalizers() 方法三 :Import

zw版【转发·台湾nvp系列Delphi例程】Delphi 使用 HALCON库件COM控件数据格式转换

zw版[转发·台湾nvp系列Delphi例程]Delphi 使用 HALCON库件COM控件数据格式转换 Delphi 使用 HALCON库件COM控件数据格式转换,与IHObjectX接口有关 var rg0,rg1 : HRegionX;begin rg0 := CoHRegionX.Create; rg0.GenRectangle1(10,10,150,150); rg1 := CoHRegionX.Create; rg1.GenRectangle1(200,200,250,250); r

分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

一个简单的带序列号输入的安装包

原文:一个简单的带序列号输入的安装包 首先建立一个Installscript Project 在Installation Designer中,找到Behavior and Logic -> Install Script, 在Setup.rul中找到Before Move Data -> OnFirstUIBefore,找到Dlg_SdRegisterUser标签中 一: 用 nResult = SdCustomerInformationEx(szTitle,szName,szCompany,s

如何建立一个运行在区块链上的世界?

如何建立一个运行在区块链上的世界? 区块链如今还是一个襁褓中的婴儿,在其得到广泛应用.充分发挥潜力之前,有许多事情需要先行解决.比如,我们需要获得政府的认可(这在美国意味着需要逐个州解决政策和监管问题). 对于银行业务.身份识别.记录保存或任何其他需要留存官方记录但如今依然利用老旧政府系统甚至依然靠纸质操作的事项,只有在各种法律和监管障碍扫除后,区块链才能发挥效用. 另外,我们需要统一的区块链行业公开标准.目前在此方面努力的最杰出联盟是Hyperledger项目. Hyperledger是一个致