浅谈Halcon分类器在实际机器视觉项目中的应用

最近在学halcon的时候看到有个奇怪的代码程序。
halcon代码

* dev_get_window (WindowHandle)
* create_class_mlp (3, 7, 2, 'softmax', 'normalization', 3, 42, MLPHandle)
* dev_set_color ('red')
* Image Acquisition 03: Code generated by Image Acquisition 03
* list_files ('D:/shijue/fangshuidai/dongfangyuhonhg2/reg', ['files','follow_links'], ImageFiles)
* tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
* for Index := 0 to |ImageFiles| - 1 by 1
*     read_image (Image, ImageFiles[Index])
*     dev_display (Image)
*     draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*     gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
*     dev_display (Image)
*     draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21)
*     gen_rectangle1 (Rectangle2, Row11, Column11, Row21, Column21)
*     concat_obj (Rectangle1, Rectangle2, Classes)
*     add_samples_image_class_mlp (Image, Classes, MLPHandle)
* endfor
* train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
* write_class_mlp (MLPHandle, 'mlp3.gmc')

后面做项目的时候才了解到,这个和OpenCV的深度学习有点像,叫做Halcon分类器。在现实的项目应用中挺好用的,可以解决图片相似但是不一样的很多问题。

train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
//分类器训练算子

分类器代码有一下几部分组成

list_files ('D:/shijue/fangshuidai/dongfangyuhonhg2/reg', ['files','follow_links'], ImageFiles)
* tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
* for Index := 0 to |ImageFiles| - 1 by 1
* read_image (Image, ImageFiles[Index])

读取训练图片的路径。

//绘制你所需要的区域
dev_display (Image)
*     draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*     gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
//绘制你区域的需要区域
*     dev_display (Image)
*     draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21)
*     gen_rectangle1 (Rectangle2, Row11, Column11, Row21, Column21)

绘制区域。

//将2个绘制的区域进行合并
*     concat_obj (Rectangle1, Rectangle2, Classes)
//将合并后的存放好
*     add_samples_image_class_mlp (Image, Classes, MLPHandle)

分类器训练算子

train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)

写入和读取分类器

write_class_mlp (MLPHandle, 'mlp4.gmc')
read_class_mlp ('mlp3.gmc', MLPHandle)

现在展示一下绘制区域的区域怎么选择
对于第1个区域的选择,我们直接选取整张图片
在这里插入图片描述
对需要的区域进行绘制,对于这样子的项目图片而言,我需要的是定义包装袋的形状中心,但是包装袋的四个角会对识别出现很大的误差,所以我们在选取需要区域是可以将有影响的范围舍弃。
在这里插入图片描述

然后直接进行下一步执行到

train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)

分类器就会开始自己运算。
因为Halcon的分类器运算是选取CPU进行运算的,而且运算量会非常的大,运算时间非常的长,所以正常情况下往往只选取3-4张图片进行运算。
up自己的电脑是暗影精灵5,i7-9750h,对7张图片的运算耗时4万1千多秒约为11小时,所以在正常分类是根据具体情况具体分析。在视觉项目中,如果你用的是Halcon来处理图片分类器其实会很常用到,如果用OpenCV来处理图片更多会上图像标定和深度学习。从难易度上说Halcon明显比OpenCV简单,但是OpenCV的功能更为强大。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值