该程序演示了如何通过灰度值形态学最小化模块之间的大间隙,以便找到并解码二维数据代码符号


总代码:

*更新状态设为off
dev_update_off ()
dev_close_window ()
*
* Get the image and display it
*获取图像并显示*读取图片
read_image (Image, 'datacode/ecc200/ecc200_to_preprocess_003')
*打开自适应图片的窗口
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)*设置一些变量
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_line_width (3)
dev_set_color ('green')
*显示图片
dev_display (Image)Message := 'This program demonstrates how to'
Message[1] := 'preprocess data code symbols with'
Message[2] := 'large gaps between the modules using'
Message[3] := 'gray value morphology.'
*显示信息--该程序演示了如何使用灰度形态学对模块之间存在较大间隙的数据代码符号进行预处理
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*
* Create the data code model and adapt the parameters to the
* biggest allowed module gap ’big’ before reading the code
*创建数据代码模型,并在读取代码之前将参数调整到允许的最大模块间隙“大”
*模块的最小间隙/最大间隙
*这个设置是让最大间隙比较大
create_data_code_2d_model ('Data Matrix ECC 200', ['module_gap_min','module_gap_max'], ['no','big'], DataCodeHandle)
*寻找二维码
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
*
* Now preprocess and then search for the data code and read it
*现在进行预处理,然后搜索数据代码并读取if (|ResultHandles| == 0)*显示图片dev_display (Image)Message := 'Search was carried out with adapted'Message[1] := 'parameters in the data code model,'Message[2] := 'but still no data code could be found!'*显示信息--使用数据代码模型中的自适应参数进行搜索,但仍然找不到数据代码!disp_message (WindowHandle, Message, 'window', 12, 12, 'red', 'true')Message := 'Now adapt the image instead of the model.'Message[1] := 'Therefor preprocess the image using'Message[2] := 'gray-value erosion and then search again'Message[3] := 'for the data code symbol.'*显示信息--现在调整图像而不是模型。因此,对图像进行灰度腐蚀预处理,然后再搜索数据编码符号。disp_message (WindowHandle, Message, 'window', 100, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()* Preprossesing with gray value erosion*灰度侵蚀预渗透,确定选定遮罩内的最小灰度值。*每个图像点计算形状MaskShape、垂直大小MaskHeight和水平大小MaskWidth遮罩内输入图像的最小灰度值。gray_erosion_shape (Image, ImageMin, 15, 15, 'rectangle')*寻找二维码find_data_code_2d (ImageMin, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)dev_display (ImageMin)* Display message about the preprocessing*显示有关预处理的消息Message := 'Data code found after adapting the image'*显示信息--调整图像后发现数据代码disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')*显示信息--预处理:灰度侵蚀disp_message (WindowHandle, 'Preprocessing: Gray value erosion', 'window', 60, 12, 'black', 'true')
endif
*
* Display the decoded data string
*显示信息--显示解码后的数据字符串
disp_message (WindowHandle, 'Decoded string: ' + DecodedDataStrings, 'window', 80, 12, 'black', 'true')
dev_display (SymbolXLDs)
*
*释放二维码阅读器分配的内存
clear_data_code_2d_model (DataCodeHandle)

逐段分析:

*更新状态设为off
dev_update_off ()
dev_close_window ()*获取图像并显示
*读取图片
read_image (Image, 'datacode/ecc200/ecc200_to_preprocess_003')*打开自适应图片的窗口
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)*设置一些变量
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_line_width (3)
dev_set_color ('green')*显示图片
dev_display (Image)

Message := 'This program demonstrates how to'
Message[1] := 'preprocess data code symbols with'
Message[2] := 'large gaps between the modules using'
Message[3] := 'gray value morphology.'*显示信息--该程序演示了如何使用灰度形态学对模块之间存在较大间隙的数据代码符号进行预处理
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

*创建数据代码模型,并在读取代码之前将参数调整到允许的最大模块间隙“大”
*模块的最小间隙/最大间隙
*这个设置是让最大间隙比较大
create_data_code_2d_model ('Data Matrix ECC 200', ['module_gap_min','module_gap_max'], ['no','big'], DataCodeHandle)*寻找二维码
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)*现在进行预处理,然后搜索数据代码并读取*如果没有找到二维码
if (|ResultHandles| == 0)*显示图片dev_display (Image)Message := 'Search was carried out with adapted'Message[1] := 'parameters in the data code model,'Message[2] := 'but still no data code could be found!'*显示信息--使用数据代码模型中的自适应参数进行搜索,但仍然找不到数据代码!disp_message (WindowHandle, Message, 'window', 12, 12, 'red', 'true')Message := 'Now adapt the image instead of the model.'Message[1] := 'Therefor preprocess the image using'Message[2] := 'gray-value erosion and then search again'Message[3] := 'for the data code symbol.'*显示信息--现在调整图像而不是模型。因此,对图像进行灰度腐蚀预处理,然后再搜索数据编码符号。disp_message (WindowHandle, Message, 'window', 100, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()

    *灰度侵蚀预渗透,确定选定遮罩内的最小灰度值。*每个图像点计算形状MaskShape、垂直大小MaskHeight和水平大小MaskWidth遮罩内输入图像的最小灰度值。gray_erosion_shape (Image, ImageMin, 15, 15, 'rectangle')

    *寻找二维码find_data_code_2d (ImageMin, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)

    *显示有关预处理的消息Message := 'Data code found after adapting the image'*显示信息--调整图像后发现数据代码disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')*显示信息--预处理:灰度侵蚀disp_message (WindowHandle, 'Preprocessing: Gray value erosion', 'window', 60, 12, 'black', 'true')
endif*显示信息--显示解码后的数据字符串
disp_message (WindowHandle, 'Decoded string: ' + DecodedDataStrings, 'window', 80, 12, 'black', 'true')
dev_display (SymbolXLDs)*释放二维码阅读器分配的内存
clear_data_code_2d_model (DataCodeHandle)


主要算子分析:

gray_erosion_shape(Image : ImageMin : MaskHeight, MaskWidth, MaskShape : )

功能:确定选定遮罩内的最小灰度值。每个图像点计算形状MaskShape、垂直大小MaskHeight和水平大小MaskWidth遮罩内输入图像的最小灰度值。

Image:要计算最小灰度值的图像。

ImageMin:包含最小灰度值的图像。

MaskHeight:过滤器遮罩的高度。

MaskWidth:过滤器遮罩的宽度。

MaskShape: 过滤器遮罩的形状。

基于Halcon学习的二维码识别【三】2d_data_codes_minimize_module_gaps.hdev相关推荐

  1. 基于Halcon学习的二维码识别【七】2d_data_codes_rectify_symbol.hdev

    这个程序演示了如何通过校正预处理来读取倾斜的二维码 总代码: *更新状态设为off dev_update_off () dev_close_window ()* Get the image and d ...

  2. 基于Halcon学习的二维码识别【一】micro_qr_simple.hdev

    此示例程序演示如何读取符号类型为"Micro QR Code"的二维数据代码.在第一步中,创建一个数据代码模型.在下一步中,将读取数据代码,并在图形窗口中显示结果. 请注意,有些符 ...

  3. 基于halcon的简易二维码识别

    二维码识别 原图 代码 结果 原图 代码 dev_update_off () dev_close_window () read_image (Image, '111.png') get_image_s ...

  4. 【第 07 章 基于主成分分析的人脸二维码识别MATLAB深度学习实战案例】

    基于主成分分析的人脸二维码识别MATLAB深度学习实战案例 人脸库 全套文件资料目录下载链接–>传送门 本文全文源码下载[链接–>传送门] 如下分析: 主文件 function varar ...

  5. 基于MATLAB的条码二维码识别系统

    基于MATLAB的条码二维码识别系统 课题介绍 本设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现.其中图像处理部分是条码识别重要的前期工作,利用MATLAB强大 ...

  6. 【毕业设计】python+opencv+深度学习实现二维码识别

    文章目录 0 前言 2 二维码基础概念 2.1 二维码介绍 2.2 QRCode 2.3 QRCode 特点 3 机器视觉二维码识别技术 3.1 二维码的识别流程 3.2 二维码定位 3.3 常用的扫 ...

  7. 前端学习--实现二维码识别功能

    概述: 最近所做的毕设项目正好与之前很火的共享单车相关,共享单车应用中很关键的一个部分就是扫码用车,但我之前没有做过相关的模块,在参考网上相关实现的教程时发现,基本上所有的二维码识别模块都是通过客户端 ...

  8. 基于深度学习的二维码检测和识别(含完整代码和数据)

    最近尝试着将深度学习技术引入到二维码检测和识别中,期望能够提升传统二维码的识读性能,能够适用更多复杂背景,并且最终应用到工业生产中,方便生产线上对产品的ID管理. 项目最终实现效果如下所示: 相对来说 ...

  9. 基于MATLAB的条形码二维码识别系统

    一.课题介绍 本设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现.其中图像处理部分是条码识别重要的前期工作,利用MATLAB强大的图象处理工具箱实现图像的读入.加 ...

最新文章

  1. icop java,java基于spring注解AOP的异常处理的方法
  2. kubernetes ConfigMap
  3. JS数据结构与算法_链表
  4. MySQL自定义变量的使用
  5. caffe 加入 cudnn编译
  6. video_replay如何捕获和回放WebRTC视频流
  7. 有关交换机——熟悉原理是必须的【转载】
  8. css selector的优先级
  9. python画中秋的月亮_水彩中秋月亮教程
  10. python经典数据类型
  11. scala spark 数据对比_Spark 实践——用 Scala 和 Spark 进行数据分析
  12. C站能力认证(C4前端基础认证) //任务二:根据浮动布局以及定位布局的特性,实现构建下列(截图)中的页面
  13. 学习Struts2框架笔记-第2天
  14. HCIE Datacom考试-MAC 地址基础及漂移技术汇总!
  15. 悟以往之不谏,知来者之可追~
  16. PMP学习笔记 第13章 项目相关方管理
  17. 钉钉调用新版待办任务
  18. css属性visibility:unset
  19. SOJ 4590 简单模拟
  20. python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲,python,爬取

热门文章

  1. 佳能hdr_神奇风光在哪里?佳能EOS R专微HDR大片攻略
  2. 宝可梦探险寻宝料理php,宝可梦探险寻宝料理怎样搭配_宝可梦探险寻宝料理配方搭配方式详解_玩游戏网...
  3. 微服务从零到一 什么是限流、熔断和降级
  4. 面试必考之Java中String是基础类型?是包装类型?
  5. TS学习笔记(ts基础类型 类型别名)
  6. 爱普生L3116无法进纸拆机探索(下)
  7. Winform仿Win10画图工具
  8. 为什么百度没有接盘赶集网?
  9. golang的chan(管道)
  10. mysql事务scalar_数据库连接池、事务