1、HALCON学习例程中文-IC引脚测量 路径-------C:\ProgramFiles\MVTec\HALCON-10.0\examples\hdevelop\Applications\Measuring-2D\measure_pin.hdev · 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, th
2、eir width and distance from each other. · First, read in the image and initialize the program Read_image (Image, 'icpin') ****取得图像第一通道的指针,同时得到图像宽度高度** Get_image_pointer1 (Image, Pointer, Type, Width, Height) *get_image_pointer1 ( Image : : : Pointer, Type, Width, Height ) ;获得图像的数据。如:类型(= ' 字节',
3、' ' ',uint2 int2 等等) 和图像的尺寸( 的宽度和高度) Dev_close_window () 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) ****显示图像如下:************
4、 · Define and display the rectangular ROIs within which the edges will be detected //ROI设置 Dev_set_draw ('margin') Dev_se_tline_width (3) Row := 55 RowBottom := 955 Column := 200 Phi := rad(-90) Length1 := 50 Length2 := 35 devsetcolor ('gray') gen_rectangle2 (Rectangle, Row, Column, Phi,
5、 Length1, Length2) gen_rectangle2 (Rectangle, RowBottom, Column, Phi, Length1, Length2) 创建ROI的矩形显示区域 *******测量位置如绿色矩形所示下:******** Disp_continue_message (WindowHandle, 'black', 'true') 显示‘继续’信息 stop () · Create a measure object for the ROI at the top of the image. *获取一阶灰度剖面图的插值方法,测量矩形框与图像坐
6、标系之间有角度时生效* 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 Thresho
7、ld := 30 Transition := 'all' Select := 'all' ***********进行测量********* measure_pos (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdge, ColumnEdge, Amplitude, Distance) 提取与矩形或环状弧垂直的直线边缘。 LeadLength1 := Distance · Display the results devsetcolor ('white') **********将测量结果画出***
8、 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
9、 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 devsetco
10、lor ('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) 清除一个测试
11、对象。 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'
12、devsetcolor ('black') *****创建新的测量矩形ROI,如图蓝色矩形:***** gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2) 创建ROI矩形 gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation, MeasureHandle) 垂直与矩形的直线边缘的提取。 · Determine all edge pairs that have a negative t
13、ransition, 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
14、 ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance) 提取测量与矩形或环状弧垂直的直线边缘。 dispcontinuemessage (WindowHandle, 'black', 'true') stop () devsetcolor ('white') disp_line (WindowHandle, RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond) avgLeadWidth := sum(IntraDistance)/|
15、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', '
16、false') disp_message (WindowHandle, 'Average Lead Distance: '+avgLeadDistance$'.2f', 'window', 320, 100, 'yellow', 'false') 信息显示 dispcontinuemessage (WindowHandle, 'black', 'true') dispcontinuemessage (WindowHandle, 'black', 'true') stop () · Zoom in to visualize the measurement results in mor
17、e detail. · First, define and display the zoom window. Row1 := 0 Column1 := 600 Row2 := 100 Column2 := 700 devsetcolor ('blue') *******设置放大区域矩形并显示,图中绿色矩形**** disp_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) 显示和坐标轴对齐的矩形。 dispcontinuemessage (WindowHandle, 'black', 'true') sto
18、p () · 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) pdispedge_marker (RowEdgeFirst, ColumnEdgeFirst, Phi
19、 5, 'white', 3, WindowHandle) pdispedge_marker (RowEdgeSecond, ColumnEdgeSecond, Phi, 5, 'white', 3, WindowHandle) · Close the measure close_measure (MeasureHandle) · Reset the display parameters. devsetpart (0, 0, Height-1, Width-1) devsetdraw ('fill') devsetline_width(1) Copyright ©2014 志强智达






