Halcon 卡尺

您所在的位置:网站首页 halcon画圆环 Halcon 卡尺

Halcon 卡尺

#Halcon 卡尺| 来源: 网络整理| 查看: 265

内外卡尺 1. 参考案例2. 使用卡尺进行测量的基本流程2.1 创建卡尺模型2.2 设置图像宽高2.3 添加卡尺2.4 设置卡尺模板参数2.5 定位(变换)2.6 测量2.7 获得结果: 3. 案例1:测量钻石的角度4. 案例2:圆形卡尺和矩形卡尺5. 下载链接

1. 参考案例

下面是halcon给出的有关卡尺的案例:

案例:applly_metrology_model_diamond.hdev案例:apply_metrology_model.hdev 2. 使用卡尺进行测量的基本流程 2.1 创建卡尺模型 create_metrology_model( : : : MetrologyHandle) 2.2 设置图像宽高 set_metrology_model_image_size( : : MetrologyHandle, Width, Height : )//卡尺所在图像宽高 2.3 添加卡尺 * 直线卡尺 add_metrology_object_line_measure( : : MetrologyHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) * 圆形卡尺 add_metrology_object_circle_measure( : : MetrologyHandle, Row, Column, Radius, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) * 椭圆形卡尺 add_metrology_object_ellipse_measure( : : MetrologyHandle, Row, Column, Phi, Radius1, Radius2, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) * 可旋转矩形卡尺 add_metrology_object_rectangle2_measure( : : MetrologyHandle, Row, Column, Phi, Length1, Length2, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) * 通用卡尺 add_metrology_object_generic( : : MetrologyHandle, Shape, ShapeParam, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) 以直线卡尺为例的参数解释: - MetrologyHandle:句柄 - RowBegin, ColumnBegin:直线起点行列坐标 - RowEnd, ColumnEnd:直线终点行列坐标 - MeasureLength1, MeasureLength2:测量矩形半宽、半高 - MeasureSigma:平滑系数 - MeasureThreshold:边缘幅度 - GenParamName:参数名 - GenParamValue:参数值 - Index:返回卡尺实例的索引 ``` 2.4 设置卡尺模板参数 set_metrology_model_param( : : MetrologyHandle, GenParamName, GenParamValue : ) * 设置参数可以选择标定参数:'camera_param',这样卡尺测量的结果就是世界坐标系,当然也可以先得到像素坐标,再转换成世界坐标,也是比较方便的。 * 设置参考系是非常常用的:'reference_system',这个参数是将被测物上的一个点设为参考点,它的结构式[row,column,angle] angle通常是0。 2.5 定位(变换) align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )//这里填参考点 2.6 测量 apply_metrology_model(Image : : MetrologyHandle : ) 2.7 获得结果: get_metrology_object_result( : : MetrologyHandle, Index, Instance, GenParamName, GenParamValue : Parameter) get_metrology_object_result_contour( : Contour : MetrologyHandle, Index, Instance, Resolution : ) get_metrology_object_measures( : Contours : MetrologyHandle, Index, Transition : Row, Column) 3. 案例1:测量钻石的角度

在这里插入图片描述 halcon代码:

dev_update_window ('off') dev_get_window (WindowHandle) set_display_font (WindowHandle, 26, 'mono', 'true', 'false') dev_set_line_width (3) list_files ('.', ['files','follow_links'], ImageFiles) tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) read_image(Image, ImageFiles[0]) get_image_size(Image, Width, Height) * 1.创建卡尺模型 create_metrology_model (MetrologyHandle) * 2.设置图像宽高 set_metrology_model_image_size (MetrologyHandle, Width, Height) * 3.添加卡尺 lineBeginR:=[155,155] lineBeginC:=[400,400] lineEndR:=[290,290] lineEndC:=[230,570] add_metrology_object_line_measure \ (MetrologyHandle, lineBeginR, lineBeginC, lineEndR, lineEndC, \ 20, 5, 1, 30, [], [], Index1) * 4.设置卡尺参数 gen_rectangle1 (ROI_0, 105.413, 328.421, 203.12, 482.063) reduce_domain (Image, ROI_0, ImageReduced) threshold (ImageReduced, Regions, 153, 255) get_region_points (Regions, Rows, Columns) set_metrology_model_param (MetrologyHandle, 'reference_system', [Rows[0],Columns[0],0]) for Index := 0 to |ImageFiles| - 1 by 1 read_image (Image, ImageFiles[Index]) reduce_domain (Image, ROI_0, ImageReduced) threshold (ImageReduced, Regions, 153, 255) get_region_points (Regions, Rows, Columns) * 5.定位、变换 align_metrology_model (MetrologyHandle, Rows[0], Columns[0], 0) * 6.测量 apply_metrology_model (Image, MetrologyHandle) * 7.获得卡尺测量结果 get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', LineParameter1) get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5) get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column) * 8.显示 * 计算夹角 angle_ll (LineParameter1[0], LineParameter1[1], \ LineParameter1[2], LineParameter1[3], \ LineParameter1[4], LineParameter1[5], \ LineParameter1[6], LineParameter1[7], Angle) * 画出一个弧形 distance_pp (LineParameter1[0], LineParameter1[1], LineParameter1[2], LineParameter1[3], Distance) line_orientation (LineParameter1[0], LineParameter1[1], LineParameter1[2], LineParameter1[3], Phi) gen_circle_contour_xld (ContCircle, Rows[0], Columns[0], Distance/2, -Phi-Angle, -Phi, 'positive', 1) dev_update_window ('on') dev_display (Image) dev_display (Contour) dev_display (Contours) dev_display (ContCircle) disp_message (WindowHandle, 'Angle='+deg(Angle), 'image', 12, 12, 'black', 'true') stop() endfor 4. 案例2:圆形卡尺和矩形卡尺

在这里插入图片描述 halcon代码:

dev_update_off () read_image (Image, 'pads') get_image_size (Image, Width, Height) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) set_display_font (WindowHandle, 14, 'mono', 'true', 'false') RowCircle := [52:89:500]//间隔取点 CircleInitRow := [RowCircle,RowCircle]//合并了两个数组 CircleInitColumn := [gen_tuple_const(6,348),gen_tuple_const(6,438)]//创建数组的一种方法 gen_cross_contour_xld (Cross1, CircleInitRow, CircleInitColumn, 6, 0.785398) CircleInitRadius := [gen_tuple_const(6,23),gen_tuple_const(6,23)] CircleRadiusTolerance := 12 RectangleInitRow := [410,410] RectangleInitColumn := [215,562] RectangleInitPhi := [0,0] RectangleInitLength1 := [85,85] RectangleInitLength2 := [88,88] RectangleTolerance := 10 * * 创建卡尺模型 create_metrology_model (MetrologyHandle) * 设置卡尺模型图像宽高 set_metrology_model_image_size (MetrologyHandle, Width, Height) * 添加矩形卡尺 add_metrology_object_rectangle2_measure (MetrologyHandle, RectangleInitRow, RectangleInitColumn, RectangleInitPhi, RectangleInitLength1, RectangleInitLength2, RectangleTolerance, 5, .5, 1, [], [], MetrologyRectangleIndices) * 添加圆形卡尺 add_metrology_object_circle_measure (MetrologyHandle, CircleInitRow, CircleInitColumn, CircleInitRadius, CircleRadiusTolerance, 5, 1.5, 2, [], [], MetrologyCircleIndices) * 设置卡尺参数 set_metrology_object_param (MetrologyHandle, MetrologyCircleIndices, 'num_instances', 2) set_metrology_object_param (MetrologyHandle, MetrologyCircleIndices, 'measure_transition', 'uniform') set_metrology_object_param (MetrologyHandle, MetrologyCircleIndices, 'min_score', .9) * 测量 apply_metrology_model (Image, MetrologyHandle) * 获得卡尺测量结果 get_metrology_object_result (MetrologyHandle, MetrologyRectangleIndices, 'all', 'result_type', 'all_param', RectangleParameter) Sequence := [0:5:|RectangleParameter| - 1] RectangleRow := RectangleParameter[Sequence] RectangleColumn := RectangleParameter[Sequence + 1] RectanglePhi := RectangleParameter[Sequence + 2] RectangleLength1 := RectangleParameter[Sequence + 3] RectangleLength2 := RectangleParameter[Sequence + 4] get_metrology_object_result (MetrologyHandle, MetrologyCircleIndices, 'all', 'result_type', 'all_param', CircleParameter) Sequence := [0:3:|CircleParameter| - 1] CircleRow := CircleParameter[Sequence] CircleColumn := CircleParameter[Sequence + 1] CircleRadius := CircleParameter[Sequence + 2] * 显示 get_metrology_object_result_contour (Contours, MetrologyHandle, 'all', 'all', 1.5) get_metrology_object_measures (Contour, MetrologyHandle, 'all', 'all', Row1, Column1) gen_cross_contour_xld (Cross, Row1, Column1, 6, 0.785398) Color := ['gray','cyan','green'] dev_display (Image) dev_set_line_width (1) dev_set_color (Color[0]) dev_display (Contour) dev_set_color (Color[1]) dev_display (Cross) dev_set_line_width (2) dev_set_color (Color[2]) dev_display (Contours) Message := Color[2] + ': Measurement result' Message[1] := Color[1] + ': Edge candidate points' Message[2] := Color[0] + ': Measure regions' disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true') 5. 下载链接

以上代码和图片的下载链接:

链接:https://pan.baidu.com/s/1KAZSuEWHCX9ZeC9k1rgm1g 提取码:qc15

有对halcon感兴趣的小伙伴可以关注我,我们一起学习,一起进步。如果您觉得这篇文章对您有帮助的话,请帮我点赞哦!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3