ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

halcon 条形码识别(持续更新)

2022-02-22 23:58:21  阅读:327  来源: 互联网

标签:条形码 code bar 解码 halcon BarCodeHandle 扫描线 识别


达到识别目的的最简化结构

*创建条码识别模型
create_bar_code_model ([], [], BarCodeHandle)

*解码
*这里码的类型自动识别
find_bar_code (Image, SymbolRegions, BarCodeHandle,['auto'], DecodedDataStrings)

只需要创建一个条形码模型再对该模型进行识别即可!

通过DecodedDataStrings我们即可得到读取到的条形码的内容

我们先加载一张图片,结果如下

再按照上述的方法对图片进行处理

得到的结果如下

我们可以发现,成功读取到数据 '05800000228902' 与'ST089030003' 但是,数据'05800000228902'的值与条码原本的值不符! 

 这说明读取出现了问题。

        为了解决本次读取出现的问题,我们要先查看读取时的候选区域,看看是否正常。我们可以

 使用以下方法查看候选区,并对候选区域进行计数,其中,候选区以蓝色显示!

*得到条形码候选区域
get_bar_code_object (BarCodeObjects, BarCodeHandle,'all', 'candidate_regions')
*对候选区域进行计数
count_obj (BarCodeObjects, Number)
*显示候选区域
dev_set_color ('blue')
dev_display (BarCodeObjects)

 

我们发现左侧码的候选区域出现了异常,本应该是一个完整的区域却被分成了两个区域

为了验证我们的想法,再查看一下扫描线,看看是否出现了异常

*得到扫描线
get_bar_code_object (BarCodeObjects1, BarCodeHandle, 'all', 'scanlines_all')

 添加代码后如下....

 运行后出现如下提示 由于对halcon刚刚学习不久,推测应该是有扫描线间断导致的

我们这个时候要设置扫描模型,将'persistence' 设置为 1 .

*找出扫描线中的有效部分
set_bar_code_param (BarCodeHandle, 'persistence', 1)

 添加代码后运行

扫描线证实了我们的想法 左侧的条形码扫描出现了异常,进行了多次扫描,扫描线出现了重叠

 

因为我们前面设置了'auto'自动解码,应该是自动解码判断错了解码类型导致的,我们使用以下代码查看一下解码类型来验证一下我们的想法

*获取解码类型
get_bar_code_result (BarCodeHandle, 'all','decoded_types', BarCodeResults)

得到结果如下,应该是自动模式识别错了条形码的类型

添加以下代码打开空白区验证,帮助其找到正确的条码类型

*打开空白区验证 此举可以自动拒绝不正确的条码类型 并且自动尝试直到找到正确的条码类型
set_bar_code_param (BarCodeHandle, 'quiet_zone', 'true')

 

 

此时解码正常了 条码被正确读取!

 至此,这个基础的条形码解码算初步完成了!

 

标签:条形码,code,bar,解码,halcon,BarCodeHandle,扫描线,识别
来源: https://blog.csdn.net/asd_sz/article/details/123072910

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有