* 此例程来自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, , 'mono', 'true', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
threshold (Bond, Bright, , )
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, , )
fill_up_shape (Wires, WiresFilled, 'area', , )
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 := *Radius
meanDiameter := sum(Diameter)/NumBalls
mimDiameter := min(Diameter)
dev_display (Bond)
disp_circle (WindowID, Row, Column, Radius)
dev_set_color ('white')
for i := to NumBalls by
if (fmod(i,)=)
disp_message (WindowID, 'D: '+Diameter[i-], 'image', Row[i-]-2.7*Radius[i-], max([Column[i-]-,]), 'white', 'false')
else
disp_message (WindowID, 'D: '+Diameter[i-], 'image', Row[i-]+1.2*Radius[i-], max([Column[i-]-,]), '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 世界的更多相关文章

  1. 小丁带你走进git世界一-git简单配置

    小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config  –global user.name BattleHeaer ...

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

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

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

    zw版[转发·台湾nvp系列Delphi例程].NET调用HALCON COM控件内存释放模式 ------------------------------------方法一 :Imports Sys ...

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

    zw版[转发·台湾nvp系列Delphi例程]Delphi 使用 HALCON库件COM控件数据格式转换 Delphi 使用 HALCON库件COM控件数据格式转换,与IHObjectX接口有关 va ...

  5. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写

    测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...

  6. 一文带你走遍Git世界,教会你Git的使用

    @ 目录 这篇文章教会Git 1. Git是什么? 1.1 发展历程 1.2 Git是什么? 1.3 Git和SVN 2.Git有什么用? 2.1 代码合并 2.2 代码备份 2.3 代码还原 2.4 ...

  7. Python之tkinter:调用python库的tkinter带你进入GUI世界(一)——Jason niu

    #tkinter应用案例五:Label组件设图片为背景并点击按钮触发事件 from tkinter import * from PIL.ImageTk import PhotoImage from s ...

  8. 一个支持邮件带附件群发的java类

    import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.Date;import ...

  9. 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)

    使用到了模块re,正则,字典等 # 实现简单的加减乘除括号等运算 # Calculator def calculator(expression): print(expression) import r ...

随机推荐

  1. AirFlow后台运行调度程序

    nohup airflow worker>>$AIRFLOW_HOME/airflow-worker.log >& & nohup airflow scheduler ...

  2. Netty源码剖析-关闭服务

    参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! ----主线:  ----源码: 先在服务端加个断点和修改下代码:如 ...

  3. 详解Cookie、Session和缓存

    1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实 ...

  4. jenkins sonarqube 代码检测部署

    install pgsql and sonarqube docker run --name postgresqldb -e POSTGRES_USER=sonar -e POSTGRES_PASSWO ...

  5. 强类型c语言 类型

    C 语言是一门强类型的语言,类型决定语言的特性,允许在相同类型进行运算. *强类型语言的特点:      1      先声明,后使用. 2      类型不可变. * 基本数据类型 * 数据类型的范 ...

  6. 文件操作之打开文件与读写文件——C语言

    一.fopen 函数原型:FILE *fopen( const char *filename, const char *mode ); 返回值:返回值类型为FILE *,打开文件成功返回指向打开文件的 ...

  7. (二)Redis之Jedis概念和HelloWorld实现以及JedisPool的使用

    一.Jedis概念 实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis, 对于主流语言,Redis都提供了对应的客户端: 官网:https://redis.io/clients ...

  8. linux安装tmux分屏插件

    linuxtmux分屏 一.安装tmux 二.基本使用 三.鼠标操作 一.安装tmux yum install -y tmux TMUX2版本以下 二.基本使用 使用tmux一般使用命令和快捷键来操作 ...

  9. 基2时抽8点FFT的matlab实现流程及FFT的内部机理

    前言 本来想用verilog描述FFT算法,虽然是8点的FFT算法,但写出来的资源用量及时延也不比调用FFT IP的好, 还是老实调IP吧,了解内部机理即可,无需重复发明轮子. 参考 https:// ...

  10. Forms Process (FRMWEB) Consumes 100% of CPU in Oracle Applications R12 (文档 ID 745711.1)

    https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=283767243216583&id=745711.1& ...