10、Halcon图像条形码和二维码识别

 

1、条形码

原理:一维条形码由黑白两种颜色组成,具有宽高两个尺寸,其中宽度方向代表着数据信息。条形码上是一般标注着字符、数字、符号等。比如下面的Code128-A、Code128-B、Code128-C。

条形码一般是由前置符、中止符、数据符、中间分隔符、校验等组成。条形码是利用条纹和间隔或宽窄条纹构成二进制的“0”、“1”,反映实际信息。

算子:

create_bar_code_model:创建条码模型。

find_bar_code:条形码识别。

2、二维码

原理:二维码是在一维码的基础上扩展出来的条码,使用黑白矩形图案表示二进制数据。一维条形码的宽度代表着某些数据,而长度没有记载数据。二维码的长度、宽度都载着数据。二维码并且有定位矩形的以及容错机制,即使二维码有部分污染时,也能尽可能的还原信息。同样二维码也具有不同的标准,具有多种格式。但是,halcon仅支持UTF-8和LOCATE两种字符集。UTF-8是一种编码规则。

算子:

create_data_code_2d_model:创建二维码模型。

find_data_code_2d:二维码识别。

程序讲解:

(1)、条形码

读取图片

*读取条形码
read_image (Image, '1.png')
rgb1_to_gray (Image, GrayImage)

创建条码模型

*创建条码模型。参数默认
create_bar_code_model ([], [], BarCodeHandle)

条形码识别

*参数4:要识别的条形码类别。不知道识别的条形码类型的话就写'auto'
find_bar_code (GrayImage, SymbolRegions, BarCodeHandle, 'auto', DecodedDataStrings)

结束,清除条形码模型(再次识别的话,还需要再次创建模型)

*清除前面创建的条形码模型
clear_bar_code_model (BarCodeHandle)

(2)、二维码

读取图片

*读取二维码图
read_image (Image1, 'myTest.png')
rgb1_to_gray (Image1, GrayImage1)

创建二维码模型

*创建二维码模型
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)

二维码识别

*二维码识别
*参数4、参数5,默认的如果不能识别,设置为'train'、'all',增加训练(程序时间变长)
*find_data_code_2d (GrayImage1, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings1)
find_data_code_2d (GrayImage1, SymbolXLDs, DataCodeHandle, 'train', 'all', ResultHandles, DecodedDataStrings1)

识别结束,清除前面创建的二维码模型

**清除前面创建的二维码模型
clear_data_code_2d_model (DataCodeHandle)

如果使用GB2312生成的二维码,在halcon中将无法识别。

 

*注意:测试的图片都是没有干扰的图像,识别准确。如果有干扰的话,需要将条形码、二维码裁剪出来。

 

工程代码链接:

https://download.csdn.net/download/panjinliang066333/12238906

 

附加

多张图像二维码识别:

https://download.csdn.net/download/panjinliang066333/12241341

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big_潘大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值