有一幅豆子图片需要采集,要求:读出图中的豆子数量
我自己做完后发现是要求达到了,可是总感觉怪怪的。代码如下:
*图像采集
read_image (Croton, 'C:/Users/LWJ/Desktop/AS_1/croton.jpg')
get_image_size (Croton, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*图像预处理
decompose3 (Croton, Red, Green, Blue) //将一个三通道的图像转化为三个图像
*将RGB颜色图像转HSV色彩图像(三维空间)
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
*缩放图像的灰度值
scale_image (Saturation, ImageScaled, 1.26238, 0)
*分割出不同区域的图像
threshold (ImageScaled, Regions, 71, 255)
opening_circle (Regions, RegionOpening, 20) //开运算
erosion_circle (RegionOpening, RegionErosion, 18) //腐蚀
connection (RegionErosion, ConnectedRegions)
*显示结果
count_obj (ConnectedRegions, Number) //计算分割出来的图像数目
dev_display (Croton)
dev_display (ConnectedRegions)
disp_message (WindowHandle, '豆子数量:'+Number, 'window', 12, 12, 'black', 'true')
总结:图像采集与图像预处理这步已经熟练掌握,但在分割区域图像的时候效果不是很好,我也是反反复复的用开运算、腐蚀、膨胀等处理,虽不能很好解决,但好歹将每个豆子的区域都分割出来了,如下图:
最后附上效果图: