HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别;分别在彩色图像下与灰度图像下进行,从而产生对比。

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_update_off ()
    dev_close_window ()
    dev_open_window (0, 0, 557, 416, ‘black’, WindowHandle)
    set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
    dev_set_draw (‘margin’)
  • 初始化
    ImageRootName := ‘color/color_pieces_0’
    Regions := [‘yellow’,‘pink’,‘blue’,‘background’]
    Highlight := [‘goldenrod’,‘magenta’,‘cyan’]
    gen_empty_obj (Classes)
    for Mode := 0 to 1 by 1
    dev_set_color (‘black’)
    read_image (Image, ImageRootName + ‘0’)

    • 生成灰度三通道图像
      if (Mode == 1)

      • rgb1_to_gray - 将RGB图像转换为灰度图像。
      • rgb1_to_gray(RGB图:灰度图 ::);转换公式:灰色= 0.299 *R+ 0.587 *G+ 0.114 *B。
        rgb1_to_gray (Image, GrayImage)
      • compose3 - 将3个图像转换为三通道图像。
      • compose3(图1,图2,图3:多通道图像 ::)
        compose3 (GrayImage, GrayImage, GrayImage, Image)
        dev_display (Image)
        disp_message (WindowHandle, ‘Train and apply the classes again on gray images’, ‘window’, 12, 12, ‘black’, ‘false’)
        disp_continue_message (WindowHandle, ‘black’, ‘true’)
        stop ()
        endif
        if (Mode == 0)
      • 指定颜色类
        for I := 1 to 4 by 1
        dev_display (Image)
        dev_display (Classes)
        disp_message (WindowHandle, [‘Drag rectangle inside ’ + Regions[I - 1] + ’ color’,‘Click right mouse button to confirm’], ‘window’, 24, 12, ‘black’, ‘false’)
        draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
        gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
      • 带有concat_obj解释的贴子注意和union1的区别
        concat_obj (Classes, Rectangle, Classes)
        endfor
        endif
    • 创建MLP分类器并添加训练样本;关于MLP分类器解释的例子
      create_class_mlp (3, 7, 4, ‘softmax’, ‘normalization’, 3, 42, MLPHandle)
      add_samples_image_class_mlp (Image, Classes, MLPHandle)
      disp_message (WindowHandle, ‘Training…’, ‘window’, 100, 12, ‘black’, ‘false’)
      train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
      for J := 0 to 3 by 1
      read_image (Image, ImageRootName + J)
      if (Mode == 1)
      rgb1_to_gray (Image, GrayImage)
      compose3 (GrayImage, GrayImage, GrayImage, Image)
      endif
      classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
      dev_display (Image)
      disp_message (WindowHandle, ‘Looking for 4 game pieces of each color …’, ‘window’, 24, 12, ‘black’, ‘false’)
      dev_set_line_width (2)
      for Figure := 1 to 3 by 1
      * copy_obj - 复制HALCON数据库中的图标对象。
      * copy_obj(要复制对象:复制出的对象,开始索引号,对象数量:)
      copy_obj (ClassRegions, ObjectsSelected, Figure, 1)
      * 分割定义域
      connection (ObjectsSelected, ConnectedRegions)
      * 通过面积筛选区域
      select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 400, 99999)
      * 对区域进行计数
      count_obj (SelectedRegions, Number)
      dev_set_color (Highlight[Figure - 1])
      dev_display (SelectedRegions)
      OutString := Regions[Figure - 1] + ': ’ + Number + ’ ’
      dev_set_color (‘green’)
      disp_message (WindowHandle, OutString, ‘window’, 24 + 30 * Figure, 12, ‘black’, ‘false’)
      if (Number != 4)
      disp_message (WindowHandle, ‘Not OK’, ‘window’, 24 + 30 * Figure, 120, ‘red’, ‘false’)
      else
      disp_message (WindowHandle, ‘OK’, ‘window’, 24 + 30 * Figure, 120, ‘green’, ‘false’)
      endif
      endfor
      if (J < 3)
      disp_continue_message (WindowHandle, ‘black’, ‘true’)
      stop ()
      endif
      endfor
      endfor
      dev_clear_window ()
      dev_display (Image)
      Message := ‘The game pieces cannot be classified reliable on’
      Message[1] := ‘gray images because the gray values of the’
      Message[2] := ‘game pieces cannot always be distinguished from’
      Message[3] := ‘the gray values of the background.’
      disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘black’, ‘true’)

处理思路

这个例子是将三通道的RGB图像使用MLP分类器进行分类,分别对灰度图像与彩色图像进行了训练与识别,对比发现还是彩色图像分类较为准确,因为灰度图像不能很好地分割出棋子与背景。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别相关推荐

  1. HALCON示例程序classify_image_class_mlp.hdev如何使用MLP分类器分割RGB图像

    HALCON示例程序classify_image_class_mlp.hdev如何使用MLP分类器分割RGB图像 示例程序源码(加注释) 关于显示相关显示在其他帖子有介绍. dev_update_of ...

  2. HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体

    HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体 小哥哥小姐姐觉得有用点个赞呗! 示例程序源码(加注释) 蓝色字体均为算子解释链接,可以前往查看解答 关于 ...

  3. HALCON示例程序bottle.hdev、bottlet.hdev瓶体字符OCR的训练和检测

    HALCON示例程序bottle.hdev.bottlet.hdev瓶体字符OCR的训练和检测 示例程序源码(加注释) 1.先介绍bottlet.hdev(训练OCR识别文件) *定义一个字符串变量F ...

  4. HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类

    HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类 示例程序源码(加注释) 由于关于SVM分类器的使用之前的贴子介绍过,所以关于SVM的 ...

  5. HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割

    HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割 示例程序源码(加注释) 显示相关设置 dev_update_off () dev_c ...

  6. HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片

    HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片 示例程序源码(加注释) dev_update_off () dev_close_window ...

  7. HALCON示例程序classify_citrus_fruits.hdev应用常规gmm分类器进行水果分类

    HALCON示例程序classify_citrus_fruits.hdev应用常规gmm分类器进行水果分类 示例程序源码(加注释) 读入图片.显示与显示相关设置 read_image (Image, ...

  8. HALCON示例程序class_ndim_box.hdev基于多通道图像的分类

    HALCON示例程序class_ndim_box.hdev基于多通道图像的分类 示例程序源码(加注释) 读入图片 read_image (Image, 'ic') 创建一个新的分类器 create_c ...

  9. HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏

    HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏 示例程序源码(加注释) 得到halcon默认图片存储路径 get_system ('ima ...

最新文章

  1. select2 4.0.8 + , 动态搜索数据
  2. vue-router(2)
  3. 从Java中的length和length()开始
  4. linux设备模型,bus,device,driver,实验遇到的问题
  5. MySQL中查询时间最大的一条记录
  6. 学习笔记(22):Python网络编程并发编程-什么是线程
  7. 频率副词always,usually,often...用法_16
  8. 开源运维管理软件排名_云上自动化部署和运维的正确姿势
  9. mysql+installer+community+5.7.9_win10系统,mysql-installer-community-5.7.19.0.msi安装
  10. spring cloud 学习(6) - zuul 微服务网关
  11. java课设电子门禁_中控门禁pullSdk Java demo 中控智慧门禁系统 - 下载 - 搜珍网
  12. Android RatingBar使用Kotlin
  13. 设置eclipse中的编辑区的背景颜色、注释文字的颜色、修改注释内作者名和时间...
  14. office2019安装D盘_office2016or2019安装在D盘的方法-可收藏备用
  15. pytorch动态调整学习率之Poly策略
  16. 南华大学计算机学院赵畅,资源环境与安全工程2020年“砥砺六十载,逐梦新时代”元旦师生联欢会顺利举办...
  17. 微信小程序开发者工具error:用户绑定的手机需要进行验证,请在客户端完成短信验证
  18. 清空input的type为file时的值
  19. matlab如何打开dcm_Matlab绘图简明手册
  20. 说一说ADI公司的DSP发展历程

热门文章

  1. iOS开发UI篇—九宫格坐标计算
  2. springmvc02
  3. 西门子新款A系列手机【ZZ】
  4. nodejs的启动方式
  5. 关于a标签的href属性的注意事项
  6. django的母板系统
  7. Jquery中post与get之间的区别详细介绍
  8. 4.4.6 数组也能无锁:AtomicIntegerArray
  9. JSP中Listener和Timer的运用
  10. WP7应用开发笔记(8) IP输入框控件