wenluderen
论坛版主
论坛版主
  • 最后登录2017-01-19
  • 发帖数287
  • 金币4129枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:7775回复:24

基础知识:一维码 二维码

楼主#
更多 发布于:2015-01-20 10:22
一维条码:由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。


×××××××××××××××
一维条码的码制:  EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码,及Codabar(库德巴码)等。
 
EAN 码:是国际通用的符号体系,是一种长度固定、无含意的条码,所表达的信息全部为数字,主要应用于商品标识
39码和128码:为目前国内企业内部自定义码制,可以根据需要确定条码的长度和信息,它编码的信息可以是数字,也可以包含字母,主要应用于工业生产线领域、图书管理等
93码:是一种类似于39码的条码,它的密度较高,能够替代39码
25码:主要应用于包装、运输以及国际航空系统的机票顺序编号等
Codabar码:应用于血库、图书馆、包裹等的跟踪管理
ISBN:用于图书管理


××××××××××××××××
组成:

一个完整的条码的组成次序依次为:静区(前)、起始符、数据符、(中间分割符,主要用于EAN码)、(校验符)、终止符、静区(后),
如图:

图片:2015-01-20_102205.jpg



静区,指条码左右两端外侧与空的反射率相同的限定区域,它能使阅读器进入准备阅读的状态,当两个条码相距距离较近时,静区则有助于对它们加以区分,静区的宽度通常应不小于6mm(或10倍模块宽度)。
起始/终止符,指位于条码开始和结束的若干条与空,标志条码的开始和结束,同时提供了码制识别信息和阅读方向的信息。
数据符,位于条码中间的条、空结构,它包含条码所表达的特定信息。
构成条码的基本单位是模块,模块是指条码中最窄的条或空,模块的宽度通常以mm或mil(千分之一英寸)为单位。构成条码的一个条或空称为一个单元,一个单元包含的模块数是由编码方式决定的,有些码制中,如EAN码,所有单元由一个或多个模块组成;而另一些码制,如39码中,所有单元只有两种宽度,即宽单元和窄单元,其中的窄单元即为一个模块。
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
wenluderen
论坛版主
论坛版主
  • 最后登录2017-01-19
  • 发帖数287
  • 金币4129枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
沙发#
发布于:2015-01-20 10:28
二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。

××××××××××××××××××××××××××××××××××××××××××××
二维条码的码制:

1. 堆叠式/行排式二维条码
堆叠式/行排式二维条码(又称堆积式或层排式二维码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code 16K、Code 49、PDF417等。
2. 矩阵式二维码
短阵式二维条码(又称棋盘式二维码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code One、Maxi Code、QR Code、 Data Matrix等。
整体说下二维码的码制:PDF417二维条码, Datamatrix二维条码, Maxicode二维条码, QR Code, Code 49, Code 16K ,Code one,等,除了这些常见的二维条码之外,还有Vericode条码、CP条码、Codablock F码、田字码、 Ultracode码,Aztec条码。

×××××××××××××××××××××××××××××××××××××
特点:

二维条码/二维码的特点
1.高密度编码,信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。
2.编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。
3.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。
4.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。
5.可引入加密措施:保密性、防伪性好。
6.成本低,易制作,持久耐用。
7.条码符号形状、尺寸大小比例可变。
8.二维条码可以使用激光或CCD阅读器识读。
×××××××××××××××××××××××××××××××
HALCON支持的码制:??????????????


wenluderen
论坛版主
论坛版主
  • 最后登录2017-01-19
  • 发帖数287
  • 金币4129枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2015-01-20 11:06
HALCON支持的一维码的码制:

 
  '2/5 Industrial', '2/5 Interleaved', 'Codabar', 'Code 128', 'Code 39', 'Code 93', 'EAN-13 Add-On 2', 'EAN-13 Add-On 5', 'EAN-13', 'EAN-8 Add-On 2', 'EAN-8 Add-On 5', 'EAN-8', 'GS1 DataBar Expanded Stacked', 'GS1 DataBar Expanded', 'GS1 DataBar Limited', 'GS1 DataBar Omnidir', 'GS1 DataBar Stacked Omnidir', 'GS1 DataBar Stacked', 'GS1 DataBar Truncated', 'GS1-128', 'MSI', 'PharmaCode', 'UPC-A Add-On 2', 'UPC-A Add-On 5', 'UPC-A', 'UPC-E Add-On 2', 'UPC-E Add-On 5', 'UPC-E', 'auto'


用到的函数:
create_bar_code_model
find_bar_code
clear_bar_code_model
×××××××××××××××××××××××××××××××××××××××××××××××××××HALCON支持的二维码的码制:
 'Aztec Code', 'Data Matrix ECC 200', 'GS1 Aztec Code', 'GS1 DataMatrix', 'GS1 QR Code', 'Micro QR Code', 'PDF417', 'QR Code'
用到的函数:
create_data_code_2d_model
find_data_code_2d
clear_data_code_2d_model


×××××××××××××××××××××××××××××××××××
wenluderen
论坛版主
论坛版主
  • 最后登录2017-01-19
  • 发帖数287
  • 金币4129枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
地板#
发布于:2015-01-20 11:40
好了 ,背景信息扯完了。开始实战:
首先测试 一维码。 码制选择为:Code 128
相关资料:http://www.systron.com.cn/128.htm
素材见下图:

图片:128.jpg



源代码:


read_image(Image,'128.jpg')
rgb1_to_gray (Image, GrayImage)
dev_set_draw ('margin')
*第一步:读取模板
*创建一个条形码阅读器的模型。
*参数一:输入   通用参数可以调整条形码模型的名称。
*参数二:通用参数可以调整条形码模型值。
*参数三: 返回的条码模板句柄
create_bar_code_model ([], [], BarCodeHandle)
*第二步:使用模板
*检测和读取条形码符号中的图像。
**参数以此是:
*输入的图像,输出的区域。
*输入的模板句柄,输入条码的码制
*返回所有成功解码的条码数据字符串。
find_bar_code (GrayImage, SymbolRegions, \
               BarCodeHandle, 'auto', \
               DecodedDataStrings)
**既然读取来就显示一下吧
disp_message (3600, DecodedDataStrings, \
              'window', 12, 12, 'black', 'true')
*第三步:从内存中把模板清理掉,当然了 你想叫销毁也可以
clear_bar_code_model (BarCodeHandle)




 HALCON12版本的代码:
128码制数据读取.zip




效果图

图片:11.png

wenluderen
论坛版主
论坛版主
  • 最后登录2017-01-19
  • 发帖数287
  • 金币4129枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
4楼#
发布于:2015-01-20 16:38
说完了  一维码 咱们接着说二维码。
××××××××××××××××××××
素材:

图片:2015-01-20_161621.jpg



图片:2015-01-20_163808.jpg





源代码:

read_image(Image,'222.jpg')
rgb1_to_gray (Image, GrayImage)
**第一步:创建模板*****************************************************************************
*初学者创建模板时建议选择使用默认参数集(参数集,是多个参数构成的集合):'default_parameters'
*default_parameters有3种识别模式(识别模式越强,适应场合越广,适应能力和识别能力越强,但耗时越多):
*standard_recognition  标准模式
*enhanced_recognition  加强模式
*maximum_recognition   最强模式
*建议初学者选用 'maximum_recognition'
*参数一:输入你要读取的二维码的码制
*参数二:通用参数可以调整为二维码数据模型的名称。
*参数三:通用参数可以调整为二维码数据模型的价值。
*参数四:返回二维码模板句柄
 
create_data_code_2d_model ('QR Code',\
                           'default_parameters', \
                           'maximum_recognition',\
                           DataCodeHandle)
**第二步:使用模板
 find_data_code_2d (GrayImage,\
                    SymbolXLDs,\
                    DataCodeHandle, 'train', 'all',\
                    ResultHandles, DecodedDataStrings)
 
* 参数依次是
*参数一:输入的图像
*参数二:XLD轮廓包围成功解码后的数据代码符号。 就是如果找到二维码所在的区域 ,
 *就将那个区域的XLD返回,注意可能输组
*参数三:所使用的模板句柄
*参数四:查找模式。  默认是空的 就是说直接找,找不到拉倒。 如果是train,就是一面找一面调整模板参数。
*参数五:可选的泛型参数的值。
 *参数六:所有成功解码二维码数据符号的句柄。为啥是句柄呢?  如果解码的数据可能很多了。
 *参数七:返回图像中的所有检测到的二维码的数据符号的译码数据串。
**第三步: 释放模板
clear_data_code_2d_model(DataCodeHandle)


×××××××××××××××××××××××××××××××××××
HALCON12格式的源码:
二维码读取.zip
a49883099
助理工程师
助理工程师
  • 最后登录2016-10-18
  • 发帖数103
  • 金币411枚
  • 贡献勋章0枚
  • 社区居民
5楼#
发布于:2015-01-21 08:23
代码简单实用,顶一下
tiger.dong
初学者
初学者
  • 最后登录2015-05-03
  • 发帖数9
  • 金币61枚
  • 贡献勋章0枚
6楼#
发布于:2015-01-24 22:33
正在寻找二维码认别方法
lu007kill
技术员
技术员
  • 最后登录2015-03-04
  • 发帖数21
  • 金币138枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2015-02-05 22:20
感谢分享,学习了!!!
e_donkey
技术员
技术员
  • 最后登录2015-12-23
  • 发帖数32
  • 金币150枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
8楼#
发布于:2015-04-18 13:24
很感谢   学习了。。。。。。。
zhanghong2
助理工程师
助理工程师
  • 最后登录2015-07-22
  • 发帖数86
  • 金币387枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
9楼#
发布于:2015-07-07 11:11
不知道halcon支持vericode 不
miaojun
助理工程师
助理工程师
  • 最后登录2016-11-08
  • 发帖数44
  • 金币466枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2015-08-12 13:55
disp_message (3600, DecodedDataStrings, \
              'window', 12, 12, 'black', 'true')
这为什么老报错
yaner
技术员
技术员
  • 最后登录2016-09-10
  • 发帖数34
  • 金币165枚
  • 贡献勋章0枚
11楼#
发布于:2015-12-15 14:13
wenluderen:说完了  一维码 咱们接着说二维码。
××××××××××××××××××××
素材:






源代码:

read_image(Image,'222.jpg')
rgb1_to_gray (Image, Gra...
回到原帖
大师,halcon中有没有二维码生成的方法?
Joanthan
助理工程师
助理工程师
  • 最后登录2016-04-29
  • 发帖数79
  • 金币230枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
12楼#
发布于:2016-01-17 13:27
大师,帮看一下,这张图的code128条码,为什么读不出来

描述:code128

图片:128-1.jpg

code128

怎么这个 HALCON 11.0读二维码挺强的,调一维码就不行了呢?
shengfeng1988
初学者
初学者
  • 最后登录2017-01-10
  • 发帖数19
  • 金币71枚
  • 贡献勋章0枚
13楼#
发布于:2016-01-23 20:51
必须顶正在学习这个感谢楼主
tanhuan
初学者
初学者
  • 最后登录2016-07-03
  • 发帖数1
  • 金币16枚
  • 贡献勋章0枚
14楼#
发布于:2016-03-29 15:06
中文内容的二维码扫描出来的字符是乱码.....
上一页
游客

返回顶部