Aztec Code是1995年,由Hand HeldProducts公司的Dr. Andrew Longacre设计。它是一种高容量的二维条形码格式。它可以对ASCII和扩展ASCII码进行编码。当使用最高容量和25%的纠错级别的時候,Aztec可以对3000个字符或者3750个数字进行编码。

Aztec的矩阵大小在15 X 15和151 X 151之间变化。每个最小单位非黑即白。它独特的位于正中的模式识别标志和安置算法使Aztec看起来像个旋涡一样。

Aztec打印解决方案允许用户选择大小和纠错级别。一共有36中不同的格式供选择,此外还有19种纠错级别可供选择,默认纠错级别是5级23%。高纠错级别意味着更少的数据容量和更小的误码机会。

以下是通过zxing-cpp开源库实现的对Aztec二维码进行解码的测试代码:

#include "funset.hpp"
#include <string>
#include <fstream>#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 <opencv2/opencv.hpp>#include "zxing/MatSource.h"int test_Aztec_decode()
{std::string image_name = "E:/GitCode/BarCode_Test/test_images/Aztec_tableShifts.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::aztec::AztecReader);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::AZTEC_HINT)));std::string txt = "E:/GitCode/BarCode_Test/test_images/Aztec_tableShifts.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;
}

测试图像如下:

测试结果如下:

GitHub:https://github.com/fengbingchun/Barcode_Test

二维码Aztec简介及其解码实现(zxing-cpp)相关推荐

  1. 二维码PDF417简介及其解码实现(zxing-cpp)

    二维码PDF417是一种堆叠式二维条码.PDF417条码是由美国SYMBOL公司发明的,PDF(Portable Data File)意思是"便携数据文件".组成条码的每一个条码字 ...

  2. 二维码的妙用:通过Zxing实现wifi账号password分享功能

    二维码是搭载信息的一种载体,通过二维码能够传递名片.网址.商品信息等,本文讲到二维码的第二种妙用:通过二维码实现wifi账号和password分享. 关于二维码的基础知识,请訪问:二维码的生成细节和原 ...

  3. 二维码的妙用:通过Zxing实现wifi账号密码分享功能

    二维码是搭载信息的一种载体,通过二维码可以传递名片.网址.商品信息等,本文讲到二维码的另外一种妙用:通过二维码实现wifi账号和密码分享. 关于二维码的基础知识,请访问:二维码的生成细节和原理 试想这 ...

  4. python二维码生成识别代码_Python3+qrcode+zxing生成和识别二维码教程

    一.安装依赖库 pip install qrcode pillow image zxing pillow是python3中PIL的代替库,image是生成图版需要用到的库 安装image时报错&quo ...

  5. ZXing 生成二维码 QRCode 和条码 CODE128 和 ZXing 解析或读取 QR_Code 和 条码 CODE_128

    二维码是国际标准,由日本某公司发明,并保留版权,免费让全世界使用,目前在中国金融支付领域大放异彩. 条码的联合发明人诺曼·约瑟夫·伍德兰德(Norman Joseph Woodland)于上世纪70年 ...

  6. 二维码Data Matrix的解码实现(zxing-cpp)

    二维码Data Matrix的介绍可以参考http://blog.csdn.net/fengbingchun/article/details/44279967 ,以下是通过zxing-cpp开源库实现 ...

  7. zxing二维码的生成与解码(C#)

    ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和An ...

  8. java 二维码原理以及用java实现的二维码的生成、解码

    QR码生成原理(一) 一.什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化.QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示 ...

  9. 基于opencv3.0和zbar下条形码和二维码的识别与解码

    其中对条码与二维码的识别分为以下4个步骤 1. 利用opencv和Zbar(或者Zxing)对标准的条形码图片(即没有多余背景干扰,且图片没有倾斜)进行解码,将解码信息显示出来,并与原始信息对比. 2 ...

最新文章

  1. Flutter 28: 图解 ListView/GridView 混用时滑动冲突小尝试
  2. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
  3. boost::multi_array模块实现在矩阵上测试切片
  4. 【收集】6410 开发板(Real6410/TE6410/OK6410/mini6410/micro6410/FL6410)wince问题
  5. 非递归遍历二叉树(算法导论第三版第十章10.4-5)
  6. 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
  7. 3dcaptcha php,php实现的Captcha验证码类实例
  8. linux删除位于后台的进程组,linux命令(12)-进程与作业管理
  9. 新风口?人造肉第一股表现强劲 股价累计上涨近600%
  10. 线性代数的本质-20160614总结
  11. 如何转型成为一家真正发挥大数据作用的 “数据驱动型公司”?
  12. linux内核之设备驱动
  13. JDBC原生连接与连接池介绍
  14. Java代理模式——CGLIB动态代理
  15. QT学习笔记(十五):QLabel的点击事件(clicked)添加
  16. 数据库时间相减_SQL 日期相减(间隔)datediff函数,
  17. java学习之高级语法(二十八)----- 网络编程
  18. python 求3位数的水仙花数_python 求3到8位数的水仙花数Pycharm实现
  19. 基于小程序开发的藏书馆
  20. 微信公众号怎么添加附件?

热门文章

  1. pytorch量化感知训练(QAT)示例---ResNet
  2. 基于pytorch的模型压缩和模型剪枝Model Prune示例
  3. python 显示gif图像
  4. 【机器视觉案例】(11) 眨眼计数器,人脸关键点检测,附python完整代码
  5. Linux改变输出字体颜色,linux下 C编程改变输出字体颜色
  6. python建站与java建站有何不同_详解模板建站和定制建站的不同之处
  7. webstorm设置TSlint格式化TypeScript代码快捷键Alt+X
  8. 安装vim-go插件之后遇到的gopls警告信息不消失的问题的解决方法
  9. 在CentOS 6.8 x86_64上安装ATS 6.2.1实录
  10. 在CentOS 6.3/6.5 64bit上为python 2.7.10安装pycurl模块