************MLP方法的物体颜色识别
dev_close_window ()
read_image (Image, 'F:/7.机器视觉/Halcon/halcon学习/颜色识别专题/糖豆4.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/10, Height/10, 'black', WindowHandle)
dev_display (Image)
*定义颜色数组
Regions := ['黄','绿','淡红','品红','背景']
*生成空目标数组(halcon中的obj指的是image,region和xld三种数据)
gen_empty_obj (Classes)
**生成颜色目标数组
for i:=1 to |Regions| by 1
dev_display (Image)
dev_display (Classes)
disp_message (WindowHandle, '请指定区域:','window', 12, 12, 'black', 'true')
**绘制水平矩形
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
**根据绘制的矩形生成对应的矩形
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
**将两个目标连接成一个
concat_obj (Rectangle, Classes, Classes)
endfor
**创建训练分类器
create_class_mlp (3, 7, 5, 'softmax', 'normalization', 3, 42, MLPHandle)
**从图像中添加样本到MLP的数据集中
add_samples_image_class_mlp (Image, Classes, MLPHandle)
disp_message (WindowHandle, '开始训练模型........', 'window', 12, 12, 'black', 'true')
**训练数据集
train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
***********************分类图像
read_image (Image2, 'F:/7.机器视觉/Halcon/halcon学习/颜色识别专题/糖豆14.jpg')
***应用MLP对图像目标物体颜色进行分类
classify_image_class_mlp (Image2, ClassRegions, MLPHandle, 0.5)
**统计物体目标的数量
count_obj (ClassRegions, Number)
for index := 1 to |Regions| by 1
dev_clear_window ()
**将目标复制给另外一个目标,用于显示
copy_obj (ClassRegions, ObjectsSelected,index, 1)
* select_shape (ObjectsSelected, ObjectsSelected1, 'area', 'and', 150, 99999)
dev_display (Image2)
dev_display (ObjectsSelected)
**逆序显示MLP颜色分类的结果:因为方法规定:分类后的顺序与添加样本的顺序相反。
disp_message (WindowHandle, Regions[Number - index], 'window', 10, 10, 'black', 'true')
endfor
运行结果如下:
MLP方法的基本步骤如下:
其实halcon中大多数的机器学习算法,都是这个套路。可能细节上有一些不同,需要去学习和实践。MLP、SVM、GMM、KNN四种算法是必须掌握的,随着halcon的更新,很多新的机器学习算法会加入进来。