基于训练学习的颜色检测:
【1】、创建分类器create_class_mlp;
【2】、从一幅图像中添加训练样本add_samples_image_class_mlp;
【3】、训练模型train_class_mlp;
【4】在一幅图像中进行识别分类classify_image_class_mlp;
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)
dev_set_draw ('margin')
*生成一个空的对象元组,用来放被训练的区域
gen_empty_obj (EmptyObject)
color:=['yellow','pink','blue','background']
read_image (Image1, 'color_pieces_00.png')
*画出要训练的区域
for i:=1 to 4 by 1
disp_message (WindowHandle1, '在'+color[i-1]+'区域内画矩形,鼠标右击结束', 'window', 12, 12, 'black', 'true')
draw_rectangle1 (WindowHandle1, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
concat_obj (EmptyObject, Rectangle, EmptyObject)
endfor
*【1】创建分类器,第一个参数为特征数,每个像素点为3通道所以为3,第二为神经元的隐式结点,第三为类别数
create_class_mlp (3, 10, 4, 'softmax', 'normalization', 10, 42, MLPHandle)
*【2】从一幅图像中添加样本
add_samples_image_class_mlp (Image1, EmptyObject, MLPHandle)
*【3】训练分类器
train_class_mlp (MLPHandle, 200, 1, 0.01, Error, ErrorLog)
for j:=0 to 3 by 1
read_image (Image, 'color_pieces_0'+j)
*【4】在一幅图像中进行识别分类
classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
closing_rectangle1 (ClassRegions, RegionClosing, 10, 10)
*显示,依次把每类区域选出来
for k:=1 to 3 by 1
select_obj (RegionClosing, ObjectSelected, k)
connection (ObjectSelected, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 646.789, 5000)
area_center (SelectedRegions, Area, Row, Column)
count_obj (SelectedRegions, Number)
for n:=0 to Number-1 by 1
disp_message (WindowHandle1, color[k-1], 'image', Row[n], Column[n], 'black', 'true')
endfor
disp_message (WindowHandle1, color[k-1]+':'+Number, 'window', 20*k, -1, 'black', 'true')
endfor
disp_continue_message (WindowHandle1, 'black', 'true')
stop()
endfor
识别结果如下: