应用halcon进行颜色识别
代码如下:
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('GigEVision', 0, 0, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '00214900caf1_DahengImavision_MER50014GC', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
grab_image_async (Image, AcqHandle, -1)
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)
*定义一个字符数组赋给Regions
Regions:=['白','蓝','青','红','背景']
gen_empty_obj (Classes)
for i := 1 to |Regions| by 1
dev_display (Image)
dev_display (Classes)
disp_message (WindowHandle, '请选定指定区域', 'windows', 12, 12, 'black', 'true')
*等待窗口窗口画东西
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*形成一个区域,并显示给人看
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*选定的区域入栈
concat_obj (Rectangle, Classes, Classes)
endfor
*将五个区域联合成一个区域
*union1 (Classes, RegionUnion)
*创建分离器。5类特征
create_class_mlp (3, 7, 5, 'softmax', 'normalization', 3, 42, MLPHandle)
*添加分类器句柄
add_samples_image_class_mlp (Image, Classes, MLPHandle)
disp_message (WindowHandle, '开始训练模型', 'window', 100, 12, 'black', 'false')
train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Image Acquisition 01: Do something
classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
*计算存在几个区域,计算输入区域中连通域的个数
count_obj (ClassRegions, Number)
for Index := 1 to 4 by 1
dev_clear_window ()
copy_obj (ClassRegions, ObjectsSelected, Index, 1)
dev_display (Image)
dev_display (ObjectsSelected)
disp_message (WindowHandle,Regions [4-Index], 'window', 10, 10, 'black', 'true')
dev_display (ObjectsSelected)
stop ()
endfor
endwhile
close_framegrabber (AcqHandle)
相机获取的图像信息:
创建分离器,选取五类特征:
经过深度学习后,可以识别对图像区域进行识别:
背景区域:
红色区域:
蓝色区域:
当放入一支笔后,笔表面的不同的颜色区域有相应的显示:
原始图像:
笔的表面不同的颜色被划为不同的区域: