不知道楼主要的直径是哪种直径,这里用凸包内直径演示,如果有需要可以换成其他的,比如拟合圆之类的,代码如下:
read_image (Image, './1.png')
get_image_size (Image, Width, Height)
decompose3 (Image, R, G, B)
equ_histo_image (R, ImageE)
mean_image (ImageE, ImageE, 9, 9)
threshold (ImageE, RegionO, 0, 186)
connection (RegionO, RegionO)
*//去除背景区域和杂质
select_shape (RegionO, RegionO, ['width','height'], 'and', [10,10], [Width-10, Height-10])
*//筛选可能区域中最大的区域
select_shape_std (RegionO, RegionO, 'max_area', 70)
fill_up (RegionO, RegionO)
region_features (RegionO, 'area', Area)
*//对区域进行凸包处理
shape_trans (RegionO, RegionOT, 'convex')
inner_circle (RegionOT, RowOT, ColOT, RadOT)
gen_circle (CircleS, RowOT, ColOT, RadOT)
*//可视化
dev_clear_window ()
dev_display (Image)
dev_set_color ('red')
dev_set_draw ('margin')
dev_display (RegionO)
dev_set_color ('green')
dev_display (CircleS)
disp_message (200000, '缺陷面积: '+Area+' pix^2\n凸包内直径: '+(RadOT*2)$'.2f'+' pix', 'window', 10, 10, 'green', 'false') |