參考hanfang 大大的方法
微調一下 自動找到線段(四張測試圖 基本可以運作! 魯棒性 須實測..)
- dev_close_window ()
- read_image (Image, 'C:/Users/genel/Downloads/image/Image1.jpg')
- get_image_size (Image, Width, Height)
- dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
-
- dev_display (Image)
- rgb1_to_gray (Image, Image)
- median_image (Image, Image, 'circle', 5, 'mirrored')
- ********************************************************
- gray_opening_rect (Image, ImageOpening, 2, 221)
- mean_image(ImageOpening, ImageMean, 19, 19)
- dyn_threshold(ImageOpening, ImageMean, RegionDynThresh, 25, 'dark')
- dilation_rectangle1(RegionDynThresh, RegionDilation, 15, 1.5)
- connection(RegionDilation, ConnectedRegions)
- select_shape(ConnectedRegions, SelectedRegions, 'width', 'and', 1250, 1999)
- smallest_rectangle2(SelectedRegions, Row3, Column3, Phi, Length1, Length2)
- gen_rectangle2(Rectangle, Row3, Column3, Phi, Length1, 0.5)
- skeleton (Rectangle, Skeleton)
- split_skeleton_lines (Skeleton, 3, Row1, Column1, Row2, Column2)
- ********************************************************
- * 用找到的區域 绘制直线
- **後面的 全部相同(刪去部分註解! 敬請見諒)
- * draw_line (WindowHandle, Row1, Column1, Row2, Column2)
- gen_region_line (Line1, Row1, Column1, Row2, Column2)
-
-
- * 根据绘制的直线坐标构建参数对象
- Line1Param := [Row1, Column1, Row2, Column2]
-
- * 1.创建计算测量句柄
- create_metrology_model (MetrologyHandle)
- * 2.设置测量模型图像的大小,主要是为了提高效率
- set_metrology_model_image_size (MetrologyHandle, Width, Height)
- * 3.添加测量模型对象
- add_metrology_object_generic (MetrologyHandle, 'line', Line1Param, 20, 5, 1, 30, [], [], Index)
- * 4.设置测量句柄的参数
- * 设置找线的极性 由黑到白 由白到黑 all
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'positive')
- * 设置测量区域的个数 卡尺数量
- set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 50)
- * 设置最少多少个点可以拟合成功
- set_metrology_object_param (MetrologyHandle, 'all', 'num_instances', 10)
- * 设置平滑系数
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_sigma', 2)
- * 半长 卡尺搜索长度
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_length1', 50)
- * 半宽 卡尺投影长度
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_length2', 0.5)
- * 对比度阈值
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_threshold', 20)
- * 设置找线插值方法
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_interpolation', 'bilinear')
- * 设置查找到的第一条边还是第二条边
- set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'last')
- * 设置最小分数
- set_metrology_object_param (MetrologyHandle, 'all', 'min_score', 0.5)
- * 5.测量并拟合测量模型中所有计量对象的几何形状
- apply_metrology_model (Image, MetrologyHandle)
- * 6.获取测量区域和计量模型的计量对象的边缘位置结果
- *
- get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
- * 7.把找到的点通过十字叉显示
- gen_cross_contour_xld (Cross, Row, Column, 3, rad(45))
- * 8.获取计量模型的测量结果
- get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
- *获取测量结果里的开始行坐标
- get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_begin', RowBegin)
- *获取测量结果里的开始列坐标
- get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_begin', ColBegin)
- *获取测量结果里的结束行坐标
- get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_end', RowEnd)
- *获取测量结果里的结束列坐标
- get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_end', ColEnd)
-
- * 查询计量对象的结果轮廓
- * MetrologyHandle 处理计量模型
- * Index 计量对象的索引 默认值:‘all’ 建议值:‘all’,0,1,2
- * Instance 计量对象的实例 默认值:‘all’ 建议值:‘all’,0,1,2
- * Resolution 相邻轮廓点之间的距离 默认值:1.5
- get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
- dev_set_color ('green')
- dev_set_line_width (2)
- dev_display (Contour)
- clear_metrology_model (MetrologyHandle)
复制代码 |