资源
链接:https://pan.baidu.com/s/1mxhD6vCn0OdY_eN8YyF81Q
提取码:cn5e
图片
代码
* 1.读取并显示图片 *************************************
dev_close_window ()
read_image (Image, './img.jpg')
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle)
dev_display (Image)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
* 2.预处理图片 *****************************************
rgb1_to_gray (Image, GrayImage)
* 小卷积核 均值滤波
mean_image (GrayImage, ImageMean1, 9, 9)
* 大卷积核 均值滤波
mean_image (GrayImage, ImageMean2, 19, 19)
* 均值图片相减
sub_image (ImageMean1, ImageMean2, ImageSub, 1, 128)
* 缩放图片到 0-255之间
scale_image_max (ImageSub, ImageScaleMax)
* 3.动态阈值 *****************************************
mean_image (ImageScaleMax, ImageMean, 7, 7)
dyn_threshold (ImageScaleMax, ImageMean, RegionDynThresh, 9, 'dark')
dilation_circle (RegionDynThresh, RegionDilation1, 2.5)
connection (RegionDilation1, ConnectedRegions)
* 4.特征筛选 *****************************************
* 计算区域的均值
gray_features (ConnectedRegions, ImageMean, 'mean', Values)
BackGrayValue := 90
* 差值转换为 [-1,1....]的数组 大于90=-1 小于90=1
SgnFilter := sgn(BackGrayValue - Values)
* 元组筛选 获取SgnFilter元组中1 的索引列表
tuple_find (SgnFilter, 1, Indices)
* 使用索引列表 筛选出区域(均值小于 < 90的区域)
select_obj (ConnectedRegions, ObjectSelected, Indices+1)
* 区域形状变换
shape_trans (ObjectSelected, RegionTrans, 'convex')
* 面积筛选
select_shape (RegionTrans, SelectedRegions, 'area', 'and', 140, 999999)
* 圆度筛选
select_shape (SelectedRegions, SelectedRegions1, 'circularity', 'and', 0.7, 1.0)
* 5.显示结果 *****************************************
dev_display (Image)
dev_display (SelectedRegions1)