楼主后面发的图片我也看了一下,可以看一下是不是这样的效果:
- dev_update_off ()
- read_image (Image, './1.png')
- rgb1_to_gray (Image, Image)
- get_image_size (Image, Width, Height)
- *//提取基准区域
- *//如果觉得边缘抓取不够可以改成固定阈值或者其他阈值提取方式
- binary_threshold (Image, RegionB, 'max_separability', 'light', UsedThreshold)
- connection (RegionB, RegionB)
- *//过滤杂质和背景
- select_shape (RegionB, RegionB, ['area','width','height'], 'and', [100,10,10], [99999, Width-10, Height-10])
- *//得到需要测量的区域
- select_shape_std (RegionB, RegionO, 'max_area', 70)
- *//获得基准区域
- difference (RegionB, RegionO, RegionB)
- union1 (RegionB, RegionB)
- closing_circle (RegionB, RegionBC, 10.5)
- connection (RegionBC, RegionBC)
- select_shape_std (RegionBC, RegionBC, 'max_area', 70)
- intersection (RegionB, RegionBC, RegionB)
- *//计算距离
- smallest_rectangle2 (RegionO, RowO, ColO, PhiO, L1O, L2O)
- gen_rectangle2 (RectO, RowO, ColO, PhiO, L1O, L2O)
- distance_rr_min (RegionB, RectO, MinDis, R1, C1, R2, C2)
- *//获得中间的矩形框
- gen_rectangle2 (RectOB, RowO, ColO, PhiO, L1O+MinDis, L2O)
- difference (RectOB, RectO, RectOB)
- connection (RectOB, RectOB)
- sort_region (RectOB, RectOB, 'first_point', 'false', 'row')
- select_obj (RectOB, RectOB, 1)
- dev_clear_window ()
- dev_display (Image)
- dev_set_line_width (2)
- dev_set_draw ('margin')
- dev_set_color ('red')
- dev_display (RegionO)
- dev_set_color ('green')
- dev_display (RectOB)
- disp_message (200000, 'Dis: '+MinDis+' pix', 'image', 10, 10, 'green', 'false')
复制代码 |