- 6
- 0
- 约3.67万字
- 约 29页
- 2017-06-07 发布于湖北
- 举报
第⼗⼆章:条形码识别
本章我们将⽤第⼗章开发的图像分析库来制作⼀个条形码识别应⽤。只要⽤⼿ 的摄
像头拍下书的封底,我们就能⽤这个程序来提取这本书的ISBN编号。
条形码简介¶
市售绝⼤多数带有外包装的量产消费品上都有⼀个条形码。尽管有很多种不同的条形
码系统在多个专业领域中被使⽤,但是在消费品中最典型的条形码系统还是UPC-A和
EAN-13两种。UPC-A 由美国开发,⽽EAN-13最初由欧洲开发。
EAN-13发表于UPC-A之后,它是UPC-A的超集。 (事实上,尽管UPC-A现在在美国
依然被⼴泛使⽤,但该标准早在在2005年已经被官⽅宣布作废了。)任何可以识别
EAN-13条形码的硬件都可以兼容UPC-A条形码。这样我们只介绍EAN-13⼀种标准就
可以了。
正如其名字所暗⽰的,EAN-13描述了⼀个由13个数字组成的序列,该序列可以分为
四组:
最前的两个数字描述了条形码采⽤的 码制 。这两位数字可以标识⽣产商所在国
家, 或者描述该条码的类别,⽐⽅说ISBN(国际标准书号) 。
[译注1 :确切的讲,此处的“⽣产商所在国”实际上是指“为该⽣产商分配⽣产商代码的
编码管理局所属国家”]
[译注2 :事实上,码制的长度可能为两位甚⾄更多位,但⽬前GS1 General
Spec f cat ons中给出的最长的码制也只有3位。例如某条形码的类别是ISBN码的话,
那么它的码制部分应该为978(后⽂中给出的实际图中也可以看到) ;如果类别是
ISSN(Internat onal Standard Ser al Number ,国际标准连续出版物号) ,则码制为977 。其
他部分的长度也⽐本章介绍的要更有弹性,但这些差异并不会影响对本章内容的理
解。事实上,这⼀部分的内容在本章后⾯的内容中也完全⽤不到,因为我们在从条码
的图形中提取出数字序列后,并没有进⼀步分离出各个分组乃⾄查询每个分组表⽰的
具体信息。]
接下来的五个数字为⼚商代码,由各国的编码规范 构分配。
再接下来的5个数字是产品代码,由⽣产⼚商决定。(规模较⼩的⽣产商可能会
使⽤较长的⽣产商ID和较短的产品ID ,但是两个ID加起总是10个数字。)
最后⼀个数字为 校验码(check digit) ,扫描设备可以通过它来校验扫描到的数
字串。
EAN-13条形码与UPC-A条形码的唯⼀不同在于后者只⽤⼀位数字表⽰码制。EAN-13
条形码通过将码制的第⼀位数字置零实现对UPC-A的兼容。
EAN-13编码¶
在考虑怎样解码EAN-13条形码之前,我们还是得先了解它是怎样被编码出来的。
EAN-13的编码规则有⼀点复杂。我们先从计算校验码——即数字串的最后⼀位开
始。
-- file: ch12/Barcode.hs
checkDigit :: (Integral a) = [a] - a
checkDigit ds = roductSum `mod` 10 `mod` 10
where roductSum = sum roducts (ma EveryOther (*3) (reverse
ma EveryOther :: (a - a) - [a] - [a]
ma EveryOther f = zi With ($) (cycle [f,id])
[译注1 :原⽂对checkD g t函数的实现有问题,翻译时⽤了⽐较直接的⽅法修正了代
码,并相应的修改了下⾯⼀段正⽂中对代码的描述]
[译注2 :你可能觉得如果把 ma EveryOther 中的 f 和 id 两个列表元素的位置对调
的话,就可以省略掉 checkDigit 的where块中的 reverse 过程。事实上这个
reverse过程是必须的,⽽且 f 和 id 也不能对调。因为EAN-13的标准规定,“将序列
中的最右侧的数字规定为 奇数位,从最右侧开始,其余数字被交替记为 偶数位 和 奇
数位,⽽只有奇数位的数字会被乘以3 。如果采取最开始说的⽅法,那么假如输⼊的
序列包含偶数个元素的话,那么整个计算过程就是错误的。这⼀点的重要性在后⽂会
有体现。]
直接看代码应该⽐⽂字描述更有助于理解校验码的计算⽅法。函数从数字串的最右⼀
位数字开始,每隔⼀位就将该数字乘以3 ,其余保持原状。接下来对处理后的列表求
和,校验码就是将这个列表的和对10取模两次得到的结果。
条形码是⼀系列定宽的条纹,其中⿊⾊的条纹表⽰⼆进制的“ 1”
您可能关注的文档
- 数据文件结构要领.pdf
- 第六篇 确定适当的访问控制.ppt
- 变频器常用设置与故障处理.ppt
- 第六篇 人工染色体.ppt
- 变频器相关参数调试与基本原理变频器常用术语中英文对照.doc
- 变压器式可控电抗器的限流电抗计算及仿真.pdf
- 第六篇 乳粉.ppt
- 第六篇 通用控件.doc
- 数据源控件SqlDataSource要领.doc
- 第六篇 系统偏好设置.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)