halcon第七讲:基于训练学习的颜色检测

 基于训练学习的颜色检测:

【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


识别结果如下:

  

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/82054823