一维码EAN 8简介及其解码实现(zxing-cpp)
一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码)。当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码。
依结构的不同,EAN条码可区分为:
1. EAN 13码: 由13个数字组成,为EAN的标准编码型式(EAN标准码)。
2. EAN 8码: 由8个数字组成,属EAN的简易编码型式(EAN缩短码)。
EAN码的全名为欧洲商品条码(European Article Number),于1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。EAN条码系统的管理是由国际商品条码总会(International Article Numbering Association)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。
EAN码具有以下特性:
1. 只能储存数字。
2. 可双向扫瞄处理,即条码可由左至右或由右至左扫瞄。
3. 必须有一检查码,以防读取资料的错误情形发生,位于EAN码中的最右边处。
4. 具有左护线、中线及右护线,以分隔条码上的不同部分与撷取适当的安全空间来处理。
5. 条码长度一定,较欠缺弹性,但经由适当的管道,可使其通用于世界各国。
EAN 8码的结构如下图:
EAN 8码具有以下特点:
1. EAN 8码共8位数,包括国别码2位,产品代码5位,及检查码1位。
2. EAN 8从空白区开始共81个模组,每个模组长0.33mm,条码符号长度为26.73mm。
3. EAN8码左右资料码编码规则与EAN 13码相同。
以下是通过zxing-cpp开源库实现的对一维码EAN 8进行解码的测试代码:
#include "funset.hpp" #include <string> #include <fstream> #include <Windows.h> #include <zxing/LuminanceSource.h> #include <zxing/common/Counted.h> #include <zxing/Reader.h> #include <zxing/aztec/AztecReader.h> #include <zxing/common/GlobalHistogramBinarizer.h> #include <zxing/DecodeHints.h> #include <zxing/datamatrix/DataMatrixReader.h> #include <zxing/MultiFormatReader.h> #include <zxing/pdf417/PDF417Reader.h> #include <zxing/qrcode/QRCodeReader.h> #include <zxing/oned/CodaBarReader.h> #include <zxing/oned/Code39Reader.h> #include <zxing/oned/Code93Reader.h> #include <zxing/oned/Code128Reader.h> #include <zxing/oned/EAN8Reader.h> #include <opencv2/opencv.hpp> #include "zxing/MatSource.h" int test_EAN8_decode() { std::string image_name = "E:/GitCode/BarCode_Test/test_images/EAN8.png"; cv::Mat matSrc = cv::imread(image_name, 1); if (!matSrc.data) { fprintf(stderr, "read image error: %s", image_name.c_str()); return -1; } cv::Mat matGray; cv::cvtColor(matSrc, matGray, CV_BGR2GRAY); zxing::Ref<zxing::LuminanceSource> source = MatSource::create(matGray); int width = source->getWidth(); int height = source->getHeight(); fprintf(stderr, "image width: %d, height: %d\n", width, height); zxing::Ref<zxing::Reader> reader; reader.reset(new zxing::oned::EAN8Reader); zxing::Ref<zxing::Binarizer> binarizer(new zxing::GlobalHistogramBinarizer(source)); zxing::Ref<zxing::BinaryBitmap> bitmap(new zxing::BinaryBitmap(binarizer)); zxing::Ref<zxing::Result> result(reader->decode(bitmap, zxing::DecodeHints(zxing::DecodeHints::EAN_8_HINT))); std::string txt = "E:/GitCode/BarCode_Test/test_images/EAN8.txt"; std::ifstream in(txt); if (!in.is_open()) { fprintf(stderr, "fail to open file: %s\n", txt.c_str()); return -1; } std::string str1; std::getline(in, str1); fprintf(stderr, "actual result: %s\n", str1.c_str()); std::string str2 = result->getText()->getText(); fprintf(stdout, "recognization result: %s\n", str2.c_str()); if (str1.compare(str2) == 0) { fprintf(stderr, "===== recognition is correct =====\n"); } else { fprintf(stderr, "===== recognition is wrong =====\n"); return -1; } in.close(); return 0; }
测试图像如下:
测试结果如下:
一维码EAN 8简介及其解码实现(zxing-cpp)的更多相关文章
- 一维码EAN 13简介及其解码实现(zxing-cpp)
一维码EAN 13:属于国际标准条码, 由13个数字组成,为EAN的标准编码型式(EAN标准码). 依结构的不同,EAN条码可区分为: 1. EAN 13码: 由13个数字组成,为EAN的标准编码型 ...
- 一维码Code 128简介及其解码实现(zxing-cpp)
一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大. Cod ...
- 一维码UPC E简介及其解码实现(zxing-cpp)
UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条 码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. UPC码仅可 ...
- 一维码UPC A简介及其解码实现(zxing-cpp)
UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条 码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. UPC码仅可 ...
- 一维码ITF 25简介及其解码实现(zxing-cpp)
一维码ITF 25又称交插25条码,常用在序号,外箱编号等应用.交插25码是一种条和空都表示信息的条码,交插25码有两种单元宽度,每一个条码字符由五个单元组成,其中二个宽单元,三个窄单元.在一个交插2 ...
- 一维码Code 93简介及其解码实现(zxing-cpp)
一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码.它没有自校验功能,为了确保数据安全性,采用了双校验字 ...
- 一维码Code 39简介及其解码实现(zxing-cpp)
一维码Code 39:由于编制简单.能够对任意长度的数据进行编码.支持设备广泛等特性而被广泛采用. Code 39码特点: 1. 能够对任意长度的数据进行编码,其局限在于印刷品的长度和条码阅读器的识别 ...
- (zxing.net)一维码EAN 8的简介、实现与解码
一.简介 一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码).当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码. 依结构的不同,EAN条码可 ...
- (zxing.net)一维码EAN 13的简介、实现与解码
一维码EAN 13:属于国际标准条码, 由13个数字组成,为EAN的标准编码型式(EAN标准码). 依结构的不同,EAN条码可区分为: EAN 13码: 由13个数字组成,为EAN的标准编码型式(EA ...
随机推荐
- eclipse工具的安装配置
安装环境 系统:Windows7 软件:jre-8u73-windows-x64.exe,eclipse-inst-win64.exe Eclipse的安装过程 1.安装jre-8u73-window ...
- 铁乐学Python_Day35_Socket模块3和hmac模块
验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂, 那么可以利用hmac+加盐的方式来实现. 例1:简单的服务端如下 #!/usr/bin/env ...
- 设计模式之——单例模式(Singleton)的常见应用场景(转):
单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此 ...
- 【2】python3字符串的比较(辨析is与==的区别)
PYTHON3基本数据类型(二.字符串) Python3字符串 ①字符串比较 1.比较字符串是否相同: ==:使用==来比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 2.字符 ...
- 如何确定PHP CLI 的php.ini文件的位置
当我们安装扩展时,可能需要手动配置php.ini文件,把扩展加进去,所以要确认PHP CLI的php.ini文件的位置.可以运行php --ini查找PHP CLI的ini文件位置,结果类似如下(各个 ...
- css画图那些事
上一篇css3写了一些基本的图形,想到是不是能用css3画个动物,便在网上找图片.于是选中一只大鹏鸟 也不难,一步步的写出身体部位,再定位上去就好了.来一张效果图,后面给两个加了动画,稍微难看一点,后 ...
- echarts问题
1.鼠标经过折线图 显示的框中的文字设置,需要设置tooltip下的formatter属性 formatter属性值可以为字符串也可function formatter:function(data) ...
- JAVA反射机制教程-获取类对象
1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...
- android scheme打开天猫,淘宝
直接上代码 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); /* Str ...
- layer关闭当前窗口并刷新父窗口
window.parent.location.reload(); var index = parent.layer.getFrameIndex(window.name); parent.layer.c ...