跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量

  • Lead Measurement: Example for the application of the measure object

  • including a lot of visualization operators.

  • First, the length of the leads is measured, then, their width and distance from each other.

  • First, read in the image and initialize the program

read_image (Image, 'ic_pin')

*****************取得图像第一通道的指针,同时得到图像宽度高度*********

get_image_pointer1 (Image, Pointer, Type, Width, Height)

dev_close_window ()

dev_open_window_fit_image (Image, 0, 0, 509, 509, WindowHandle)

set_display_font (WindowHandle, 14, 'mono', 'true', 'false')

dev_display (Image)

****************显示图像如下:****************************************

dev_set_draw ('margin')

dev_set_line_width (3)

  • Define and display the rectangular ROIs within which the edges will be detected

Row := 55

RowBottom := 955

Column := 200

Phi := rad(-90)

Length1 := 50

Length2 := 35

dev_set_color ('gray')

gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)

gen_rectangle2 (Rectangle, RowBottom, Column, Phi, Length1, Length2)

*************************测量位置如绿色矩形所示下:**************************

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

  • Create a measure object for the ROI at the top of the image.

******获取一阶灰度剖面图的插值方法,测量矩形框与图像坐标系之间有角度时生效******

Interpolation := 'nearest_neighbor'

****************************生成测量矩形框,先测上部****************************

gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation, MeasureHandle)

  • Determine all edges and calculate the lead height at the top of the image

Sigma := 1.0

Threshold := 30

Transition := 'all'

Select := 'all'

**************************************进行测量********************************

measure_pos (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdge, ColumnEdge, Amplitude, Distance)

LeadLength1 := Distance

  • Display the results

dev_set_color ('white')

***********************************将测量结果画出*****************************

disp_line (WindowHandle, RowEdge, ColumnEdge-Length2, RowEdge, ColumnEdge+Length2)

disp_message (WindowHandle, 'Lead Length: '+LeadLength1$'.2f', 'window', RowEdge[1]+40, ColumnEdge[1]+100, 'yellow', 'false')

  • Shift the measure object and determine the lead height at the bottom of the image

************************转移测量框至新的参考坐标点,及测量下部******************

translate_measure (MeasureHandle, RowBottom, Column)

**************************************进行测量********************************

measure_pos (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdge, ColumnEdge, Amplitude, Distance)

LeadLength2 := Distance

  • Display the results

dev_set_color ('white')

***********************************将测量结果画出*****************************

disp_line (WindowHandle, RowEdge, ColumnEdge-Length2, RowEdge, ColumnEdge+Length2)

disp_message (WindowHandle, 'Lead Length: '+LeadLength2$'.2f', 'window', 360, ColumnEdge[1]+100, 'red', 'false')

  • Close the measure

close_measure (MeasureHandle)

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

  • Now, define and display a rectangular ROI perpendicular to the leads and create the measure

dev_display (Image)

Row := 47

Column := 485

Phi := 0

Length1 := 420

Length2 := 8

Interpolation := 'nearest_neighbor'

dev_set_color ('black')

*******************创建新的测量矩形ROI,如图蓝色矩形:*******************

gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)

gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation, MeasureHandle)

  • Determine all edge pairs that have a negative transition, i.e., edge pairs

  • that enclose dark regions.

Sigma := 1.0

Threshold := 30

Transition := 'negative'

Select := 'all'

******************************进行测量计算并显示结果*************************

measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

dev_set_color ('white')

disp_line (WindowHandle, RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond)

avgLeadWidth := sum(IntraDistance)/|IntraDistance|

avgLeadDistance := sum(InterDistance)/|InterDistance|

numLeads := |IntraDistance|

disp_message (WindowHandle, 'Number of Leads: '+numLeads, 'window', 200, 100, 'yellow', 'false')

disp_message (WindowHandle, 'Average Lead Width: '+avgLeadWidth$'.2f', 'window', 260, 100, 'yellow', 'false')

disp_message (WindowHandle, 'Average Lead Distance: '+avgLeadDistance$'.2f', 'window', 320, 100, 'yellow', 'false')

disp_continue_message (WindowHandle, 'black', 'true')

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

  • Zoom in to visualize the measurement results in more detail.

  • First, define and display the zoom window.

Row1 := 0

Column1 := 600

Row2 := 100

Column2 := 700

dev_set_color ('blue')

**************************设置放大区域矩形并显示,图中绿色矩形*****************

disp_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

  • Then, zoom the image and display the results.

*********************设置图像放大区域并显示**********************************

dev_set_part (Row1, Column1, Row2, Column2)

dev_display (Image)

dev_set_color ('black')

**********************画出测量矩形ROI和测得的边缘如图*************************

dev_display (Rectangle)

p_disp_edge_marker (RowEdgeFirst, ColumnEdgeFirst, Phi, 5, 'white', 3, WindowHandle)

p_disp_edge_marker (RowEdgeSecond, ColumnEdgeSecond, Phi, 5, 'white', 3, WindowHandle)

  • Close the measure

close_measure (MeasureHandle)

  • Reset the display parameters.

dev_set_part (0, 0, Height-1, Width-1)

dev_set_draw ('fill')

dev_set_line_width(1)

跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量的更多相关文章

  1. 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...

  2. 跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 * This example program demonstrates the basic usage of a fuzz ...

  3. 跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距

    跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距 This example program demonstrates the basic usage of a circular meas ...

  4. 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

    跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手-打开新的Image Acquisitio ...

  5. 《TensorFlow学习指南深度学习系统构建详解》英文PDF+源代码+部分中文PDF

    主要介绍如何使用 TensorFlow 框架进行深度学习系统的构建.涉及卷积神经网络.循环神经网络等核心的技术,并介绍了用于图像数据和文本序列数据的模型.给出了分布式深度学习系统在TensorFlow ...

  6. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  7. Nginx中文详解、配置部署及高并发优化

      一.Nginx常用命令: 1. 启动 Nginx          /usr/local/nginx/sbin/nginxpoechant@ubuntu:sudo ./sbin/nginx2. 停 ...

  8. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...

  9. [转]iOS学习之UINavigationController详解与使用(三)ToolBar

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...

随机推荐

  1. [C#]Array 添加扩展

    众所周知,Array 一旦定义好,譬如四个长度,当需要再往里面添加元素的时候,需要Array.Resize一下才可以,为了提高代码复用,所以索性封装下,方便使用,代码如下: /// <summa ...

  2. java 子类的实例化和代码块初始化过程

    1,子类的实例化 1,子父类中的构造函数的特点. 在子类构造对象时,发现,访问子类构造函数时,父类也运行了. 为什么呢? 原因是:在子类的构造函数中第一行有一个默认的隐式语句. super(); 子类 ...

  3. 纯原生js移动端城市选择插件

    接着上一篇纯js移动端日期选择插件,话说今天同事又来咨询省市县联动的效果在移动端中如何实现,还是老样子,百度上一搜,诶~又全是基于jquery.zepto的,更加可恨的是大多数都是PC版的,三个sel ...

  4. js中的referrer返回上一页使用介绍

    js中的referrer的用法举例. js完整代码:  <script language="javascript">  var refer=document.refer ...

  5. Universal-Image-Loader(UIL)使用方法&流程图&源码分析 ----- 未完

    GitHub源码: Android-Universal-Image-Loader Features Multithread image loading (async or sync) 多线程加载(同步 ...

  6. Sqlserver循环嵌套

    1.游标的状态,游标的开启游标的选择都是需要注意的. USE [ccnu] GO /****** Object: StoredProcedure [dbo].[P_ADD_DATA_XSBLHYCQK ...

  7. hdu 1568 Fibonacci 数学公式

    Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到的Fibonacci数列(f[0]=0,f[1]=1;f[i] = ...

  8. uCGUI动态内存管理

    动态内存的堆区 /* 堆区共用体定义 */ typedef union { /* 可以以4字节来访问堆区,也可以以1个字节来访问 */ ]; /* required for proper aligne ...

  9. Memcached(五)Memcached的并发实例

    package com.sinosuperman.memcached; import java.io.IOException; import java.net.InetSocketAddress; i ...

  10. word-wrap同word-break的区别(转)

    本文列举了兼容 IE 和 FF 的换行 CSS 推荐样式,详细介绍了word-wrap同word-break的区别. 兼容 IE 和 FF 的换行 CSS 推荐样式 最好的方式是 word-wrap: ...