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