本帖最后由 张满满 于 2023-10-19 13:23 编辑
- dev_update_off ()
- read_image (Image , 'image.jpg')
- binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold)
- opening_circle (Region, RegionOpening, 3.5)
- connection (RegionOpening, ConnectedRegions1)
- gen_contour_region_xld (ConnectedRegions1, Contours3, 'border')
- smooth_contours_xld (Contours3, SmoothedContours, 21)
- closing_circle (Region, RegionClosing, 23.5)
- fill_up (RegionClosing, RegionFillUp)
- connection (RegionFillUp, ConnectedRegions)
- select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
- gen_contour_region_xld (SelectedRegions, Contours, 'border')
- fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
- gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
- **外圆参数
- outCircle:=ContCircle
- outCirRow:=Row
- outCirCol:=Column
- outCirRadius:=Radius
- difference (RegionFillUp,RegionClosing, RegionDifference)
- connection (RegionDifference, ConnectedRegions)
- select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
- gen_contour_region_xld (SelectedRegions, Contours, 'border')
- fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
- gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
- **内圆参数
- inCircle:=ContCircle
- inCirRow:=Row
- inCirCol:=Column
- inCirRadius:=Radius
- **找外圆
- create_metrology_model (MetrologyHandle1)
- add_metrology_object_circle_measure (MetrologyHandle1, outCirRow, outCirCol, outCirRadius, 20, 5, 1.2, 30, [], [], Index)
- set_metrology_object_param (MetrologyHandle1, 'all', 'measure_transition', 'negative')//白到黑
- set_metrology_object_param (MetrologyHandle1, 'all', 'measure_select', 'last')//选择第一条
- apply_metrology_model (Image, MetrologyHandle1)
- **获取结果
- get_metrology_object_result (MetrologyHandle1, 'all', 'all', 'result_type', 'all_param', Parameter1)
- **显示卡尺
- get_metrology_object_result_contour (Contour1, MetrologyHandle1, 'all', 'all', 1.5)
- **边缘点
- get_metrology_object_measures (Contours1, MetrologyHandle1, 'all', 'all', Row1, Column1)
- gen_cross_contour_xld (Cross1, Row1, Column1, 6, rad(45))
- gen_cross_contour_xld (Center1, Parameter1[0], Parameter1[1], 20, 0.785398)
- **找内圆
- create_metrology_model (MetrologyHandle2)
- add_metrology_object_circle_measure (MetrologyHandle2, inCirRow, inCirCol, inCirRadius, 20, 5, 1.2, 30, [], [], Index)
- set_metrology_object_param (MetrologyHandle2, 'all', 'measure_transition', 'positive')//黑到白
- set_metrology_object_param (MetrologyHandle2, 'all', 'measure_select', 'first')//选择第一条
- apply_metrology_model (Image, MetrologyHandle2)
- **获取结果
- get_metrology_object_result (MetrologyHandle2, 'all', 'all', 'result_type', 'all_param', Parameter2)
- **显示卡尺
- get_metrology_object_result_contour (Contour2, MetrologyHandle2, 'all', 'all', 1.5)
- **边缘点
- get_metrology_object_measures (Contours2, MetrologyHandle2, 'all', 'all', Row2, Column2)
- gen_cross_contour_xld (Cross2, Row2, Column2, 6, rad(45))
- gen_cross_contour_xld (Center2, Parameter2[0], Parameter2[1], 20, 0.785398)
- angle_lx (Parameter1[0], Parameter1[1], Parameter2[0], Parameter2[1], Angle)
- gen_arrow_contour_xld (Arrow, Parameter1[0], Parameter1[1], Parameter2[0] - Parameter2[2] * sin(Angle), Parameter2[1] + Parameter2[2] * cos(Angle), 15, 15)
- dev_set_line_width (2)
- dev_display (Image)
- dev_set_color ('green')
- dev_display (Contour1)
- dev_display (Center1)
- dev_display (Contour2)
- dev_display (Center2)
- dev_set_color ('blue')
- dev_display (Contours1)
- dev_display (Contours2)
- dev_set_color ('red')
- dev_display (Arrow)
- dev_display (SmoothedContours)
- clear_metrology_model (MetrologyHandle1)
- clear_metrology_model (MetrologyHandle2)
复制代码
|