• [机器视觉]halcon应用实例 边缘检测2


            一个学习找边的实例2,用于练习相关算子,这个版本比较简单,少了一些对图像的处理。所以主要是用于练习思路和相关算子。只有用了,练了你在脑子里心才有收获。

    边缘检测的步骤图解

    代码

    1. *直线找边
    2. *清空屏幕,显式控制图像显示
    3. dev_close_window ()
    4. *读取图片
    5. read_image (Image, 'printer_chip/printer_chip_01')
    6. *根据 图片文件打开 图像窗口并获取窗口句柄
    7. dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
    8. dev_display (Image)
    9. *******测量逻辑**********
    10. *创建测量模型
    11. create_metrology_model (MetrologyHandle)
    12. *绘制测量直线
    13. *WindowHandle 输入参数,窗口句柄
    14. *Row1, Column1 测量直线的第一个点
    15. *Row2, Column2 测量直线的第二个点
    16. draw_line (WindowHandle, Row1, Column1, Row2, Column2)
    17. *添加找边(找直线)工具,给定参数,显示过程卡尺的轮廓
    18. *通用工具 这里可以通过 第二个参数指定具体的工具
    19. *add_metrology_object_generic (MetrologyHandle, 'circle', Index2, 20, 5, 1, 30, [], [], Index3)
    20. *circle 圆形工具
    21. *add_metrology_object_circle_measure (MetrologyHandle, Row1, Column1, Row1, 20, 5, 1, 30, [], [], Index1)
    22. *circle 椭圆工具
    23. *add_metrology_object_ellipse_measure (MetrologyHandle, Row1, Column1, Index1, Index1, Index1, 20, 5, 1, 30, [], [], Index2)
    24. *rectangle 矩形工具
    25. *add_metrology_object_rectangle2_measure (MetrologyHandle, Row1, Column1, Index3, Index3, Index3, 20, 5, 1, 30, [], [], Index4)
    26. *line 直线工具
    27. *添加直线测量对象到模型
    28. *函数参数:
    29. *    MeasureHandle:输入测量模型的句柄;
    30. *    RowBegin:输入测量区域行坐标起点;(测量直线的第一个点X坐标)
    31. *    ColumnBegin:输入测量区域列坐标起点;(测量直线的第一个点Y坐标)
    32. *    RowEnd:输入测量区域行坐标终点;(测量直线的第二个点X坐标)
    33. *    ColumnEnd:输入测量区域列坐标终点;(测量直线的第二个点Y坐标)
    34. *    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:102030
    35. *    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3510
    36. *    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.40.60.81.01.52.03.04.05.07.010.0
    37. *    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0
    38. *    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    39. *    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    40. *    Index:输出创建测量对象的索引值;
    41. *原文链接:https://blog.csdn.net/qq_41225961/article/details/127668923
    42. add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 20, 5, 1, 30, [], [], Index)
    43. *在图像坐标中查询/获取测量对象的模型轮廓。
    44. *函数参数:
    45. *    Contours:输出测量对象测量区域的矩形XLD轮廓;
    46. *    MetrologyHandle:输入测量模型的句柄;
    47. *    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    48. *    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,范围:Resolution>=1.192e-7
    49. *原文链接:https://blog.csdn.net/qq_41225961/article/details/127957863
    50. get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
    51. *获取测量区域和测量模型的测量对象的边缘位置结果
    52. *函数参数:
    53. *    Contours:输出测量对象测量区域的矩形XLD轮廓;
    54. *    MetrologyHandle:输入测量模型的句柄;
    55. *    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    56. *    Transition:输入选择浅色/深色或深色/浅色边缘;默认值:‘all’,可选:all‘全部’,negative‘负面’,positive‘正面’;
    57. *    Row:输出测量边缘的行坐标;
    58. *    Column:输出测量边缘的列坐标;
    59. *原文链接:https://blog.csdn.net/qq_41225961/article/details/127916050
    60. get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
    61. dev_set_color ('cyan')
    62. dev_display (Contour)
    63. dev_display (Contours)
    64. *-------------------------
    65. *执行找边(找直线)并显示结果
    66. *测量并拟合测量模型中所有计量对象的几何形状
    67. *函数参数:
    68. *    Image:输入的测量图像;
    69. *    MeasureHandle:输入测量模型的句柄;
    70. apply_metrology_model (Image, MetrologyHandle)
    71. *获取测量模型的测量结果
    72. *函数参数:
    73. *    MetrologyHandle:输入测量模型的句柄;
    74. *    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    75. *    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2
    76. *    GenParamName:输入参数名称;默认值:‘result_type’,参考:‘angle_direction’,‘result_type’,‘used_edges’;
    77. *      (1)‘result_type’:如果GenParamName设置为’result_type’,则GenParamValue允许控制计量对象的返回方式和结果。
    78. *      (2)‘angle_direction’:该参数确定由拟合产生的角度的旋转方向。将参数’angle_direction’设置为’正’,在物体的主轴和坐标系的水平轴之间以数学正方向(逆时针方向)指定角度。将参数’angle_direction’设置为’负’,在对象的主轴和坐标系的水平轴之间沿数学负方向(顺时针)指定角度。角度的结果以弧度返回。
    79. *      默认值:‘正面’,参考:‘正面’,‘负面’;
    80. *      (3)‘used_edges’:要查询实际用于拟合度量对象的边缘点,可以选择以下GenParamValue值:
    81. *        ‘行’:返回用于拟合度量对象的边的行坐标。
    82. *        ‘列’:返回用于拟合度量对象的边的列坐标。
    83. *        ‘振幅’:返回用于拟合度量对象的边缘的边缘幅度。
    84. *    GenParamValue:输入参数值;默认值:‘all_param’,参考:‘all_param’, ‘score’, ‘true’, ‘false’, ‘row’, ‘column’, ‘amplitude’, ‘radius’, ‘phi’, ‘radius1’, ‘radius2’, ‘length1’, ‘length2’, ‘row_begin’, ‘column_begin’, ‘row_end’, ‘column_end’, ‘nrow’, ‘ncolumn’, ‘distance’, ‘x’, ‘y’, ‘x_begin’, ‘y_begin’, ‘x_end’, ‘y_end’, ‘nx’, ‘ny’, ‘positive’, ‘negative’
    85. *      如果GenParamValue设置为’all_param’,则返回计量对象的所有测量参数。
    86. *        对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或[‘x’,‘y’,‘radius’]。
    87. *        对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或[‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]。
    88. *        对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]或[‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]
    89. *        对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或[‘x’,‘y’,‘phi’,‘length1’,‘length2’]。
    90. *    Parameter:输出结果值;
    91. *原文链接:https://blog.csdn.net/qq_41225961/article/details/128021925
    92. get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
    93. *查询(获取)测量对象的结果轮廓
    94. *函数参数:
    95. *    Contour:输出给定测量对象的结果轮廓;
    96. *    MetrologyHandle:输入测量模型的句柄;
    97. *    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    98. *    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2
    99. *    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,参考:Resolution >= 1.192e-7
    100. *原文链接:https://blog.csdn.net/qq_41225961/article/details/128031609
    101. get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
    102. dev_set_line_width (3)
    103. dev_set_color ('red')
    104. dev_display (Contour1)
    105. stop()
    106. *清除句柄
    107. clear_metrology_model (MetrologyHandle)

    效果

  • 相关阅读:
    如何实现FinClip微信授权登录的三种方案
    操作系统学习笔记10 | I/O、显示器与键盘
    netty的selector工作原理
    PowerBI入门指南
    Makfile总结
    东方博易OJ——1000 - 【入门】熟悉一下Online Judge的环境
    STL(标准模板库)入门
    使用命令行创建uniapp+TS项目,使用vscode编辑器
    Chapter3 Pytorch与机器学习有关函数(二)
    Redis为什么要使用SDS作为基本数据结构
  • 原文地址:https://blog.csdn.net/cjh16606260986/article/details/136320938