Halcon 10.0 Sample:完整性检查(圆形)
* ball.hdev: Inspection of Ball Bonding
* 球接合检查 Comment Time://
*核心思想:.白色区域用作自动ROI,黑色区域是目标
* .Opening_circle:圆形开算子是关键
*关闭窗口刷新,关闭窗口,打开窗口[,]
dev_update_window ('off')
dev_close_window ()
dev_open_window (, , , , 'black', WindowID)
*读取图像并显示
read_image (Bond, 'die/die_03')
dev_display (Bond)
set_display_font (WindowID, , 'mono', 'true', 'false')
*显示F5提示信息并暂停
disp_continue_message (WindowID, 'black', 'true')
stop ()
*固定二值化,取白色区域部分
threshold (Bond, Bright, , )
*将所有区域变换成最小的外接矩形,相当于做ROI
shape_trans (Bright, Die, 'rectangle2')
*设置显示方式:绿色,边缘模式,线条宽度3
dev_set_color ('green')
dev_set_line_width ()
dev_set_draw ('margin')
dev_display (Die)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*利用生成的外接矩形做ROI
reduce_domain (Bond, Die, DieGrey)
*在ROI中二值化取黑色区域,并按面积标准填充
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)
*已OK的区域进行从左至右排序
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')
dev_display (Bond)
dev_set_colored ()
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 ()

Halcon 10.0 Sample:完整性检查(圆形)的更多相关文章
- Halcon 10.0:Sample 分割边缘拟合圆Circles.hdev
处理流程:快速二值化(区域)->获取区域边缘->截取边缘->膨胀边缘区域(定位)->定位区域进行边缘检测->边缘分割:线和圆->选择属性为圆的弧->拟合圆 * ...
- Halcon 10.0:Hobject图像转CBitmap
void HImage2CBitmap(Hobject pImage,CBitmap *wImage) { char lpcsType[MAX_STRING]; Hlong lPointer,widt ...
- kafka0.9.0及0.10.0配置属性
问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...
- Visual Studio 10.0设置引用HalconDotNet.dll
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010435562/article/details/8858638 開始做Halcon的上位机.选用 ...
- Kafka: Producer (0.10.0.0)
转自:http://www.cnblogs.com/f1194361820/p/6048429.html 通过前面的架构简述,知道了Producer是用来产生消息记录,并将消息以异步的方式发送给指定的 ...
- IEEEXtreme 10.0 - Inti Sets
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Inti Sets 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank.c ...
- IEEEXtreme 10.0 - Dog Walking
博客中的文章均为 meelo 原创,请务必以链接形式注明 本文地址 Xtreme 10.0 - Dog Walking 题目来源 第10届IEEE极限编程大赛 https://www.hackerra ...
- IEEEXtreme 10.0 - Painter's Dilemma
这是 meelo 原创的 IEEEXtreme极限编程比赛题解 Xtreme 10.0 - Painter's Dilemma 题目来源 第10届IEEE极限编程大赛 https://www.hack ...
- IEEEXtreme 10.0 - Ellipse Art
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Ellipse Art 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank ...
随机推荐
- RobotFrameWork http/https oauth接口测试 (一)
感觉自己最近销声匿迹快一个月了,应该总结下自己这个月学习的东西了~~~折腾完公司私有协议的接口测试(c++接口),开始折腾公司的http/https接口和webservice接口的测试,想着把所有的这 ...
- GridView----CustomRowCellEdit 使用注意事项
当你在Grid和TreeList中,需要对不同的行中的某一个单元格(Cell)提供特定的RepositoryItem时,使用CustomRowCellEdit 绝对能胜任, 但在使用时千万要注意了:“ ...
- [Effective JavaScript 笔记]第64条:对异步循环使用递归
假设需要有这样一个函数,接收一个URL的数组并尝试依次下载每个文件直到有一个文件被成功下载.如果API是同步的,使用循环很简单实现. function downloadOneSync(urls){ f ...
- Hadoop编程1:天气数据AWK & MapReduce
本文介绍通过AWK和MapReduce两种方式统计出每年温度到最高气温直.awk速度虽然快,而且简短,但是数据量巨大到时候,就遇到力瓶颈,及时分布式执行awk脚本,也会出现机器死掉等问题,需要容错机制 ...
- (顺序表的应用5.4.3)POJ 1012(约瑟夫环问题——保证前k个出队元素为后k个元素)
/* * POJ-1012.cpp * * Created on: 2013年10月31日 * Author: Administrator */ #include <iostream> # ...
- [OGRE]最小ogre程序的流程
总结一下最小ogre程序的流程: 1 创建Ogre::Root 2 用Ogre::Root加载插件,必须载入的是场景管理器和渲染器 3 调用Ogre::ResourceGroupManager::ge ...
- lua table 排序--满足多条件排序
前提 假设 一个小怪 有三种属性,等级(level).品质(quality).id(pid) 我们需要对他们进行排序,两种排序情况,第一是单一属性排序,比如按照等级进行排序,或者多种属性进行优先级排序 ...
- CentOS install GCC-4.8.5
1. 下载源码:http://ftp.gnu.org/gnu/gcc 2. cd gcc-4.8.5 ./contrib/download_prerequisites //下载资源包 3. ...
- unity4.6学习Ugui中文文档-------参考-UGUI Rect Transform
1 . Rect Transform Rect Transform 是 2D 与 3D 图形的 Transform 组件对应.它用来指定用户界面系统中的大小. 位置和旋转的控件 Properties ...
- Unity3d 脚本相互调用
unity中三种调用其他脚本函数的方法 第一种,被调用脚本函数为static类型,调用时直接用 脚本名.函数名().很不实用…… 第二种,GameObject.Find("脚本所在物体名& ...