二维码Data Matrix的介绍见: http://blog.csdn.net/fengbingchun/article/details/44279967  ,这里简单写了个生成二维码和对二维码进行识别的测试例子,如下:

int test_data_matrix_encode()
{std::string str = "中国_abc_DEF_123_@#$!HTTP://WWW.LIBDMTX.ORG";DmtxEncode* enc = dmtxEncodeCreate();assert(enc != NULL);int ret = dmtxEncodeDataMatrix(enc, strlen(str.c_str()), (unsigned char*)str.c_str());assert(ret == 1);int width = dmtxImageGetProp(enc->image, DmtxPropWidth);int height = dmtxImageGetProp(enc->image, DmtxPropHeight);int bytesPerPixel = dmtxImageGetProp(enc->image, DmtxPropBytesPerPixel);fprintf(stderr, "image width: %d, image height: %d, channels: %d\n", width, height, bytesPerPixel);assert(bytesPerPixel == 1 || bytesPerPixel == 3 || bytesPerPixel == 4);cv::Mat mat;if (bytesPerPixel == 1)mat = cv::Mat(height, width, CV_8UC1);else if (bytesPerPixel == 3)mat = cv::Mat(height, width, CV_8UC3);elsemat = cv::Mat(height, width, CV_8UC4);mat.data = enc->image->pxl;std::string image_name = "E:/GitCode/BarCode_Test/test_images/data_matrix_encode.jpg";cv::imwrite(image_name, mat);dmtxEncodeDestroy(&enc);return 0;
}int test_data_matrix_decode()
{std::string image_name = "E:/GitCode/BarCode_Test/test_images/data_matrix_encode.jpg";cv::Mat mat = cv::imread(image_name, 1);if (!mat.data) {fprintf(stderr, "read image error\n");return -1;}int width = mat.cols;int height = mat.rows;int channels = mat.channels();DmtxImage* img = dmtxImageCreate(mat.data, width, height, DmtxPack24bppRGB);if (!img) {fprintf(stderr, "dmtx image create fail\n");return -1;}DmtxDecode* dec = dmtxDecodeCreate(img, 1);if (!dec) {fprintf(stderr, "dmtx decode create fail\n");return -1;}DmtxRegion* reg = dmtxRegionFindNext(dec, nullptr);if (!reg) {fprintf(stderr, "dmtx region fail\n");return -1;}DmtxMessage* msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);if (!msg) {fprintf(stderr, "dmtx decode matrix region fail\n");return -1;}std::string str(reinterpret_cast<char*>(msg->output));fprintf(stderr, "decode result: %s\n", str.c_str());dmtxMessageDestroy(&msg);dmtxRegionDestroy(&reg);dmtxDecodeDestroy(&dec);dmtxImageDestroy(&img);return 0;
}

其中test_data_matrix_encode函数用来生成二维码,如下:

test_data_matrix_decode函数用来简析上面生成的二维码,执行结果如下:

可看出,前后结果是一致的。

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

二维码Data Matrix编码、解码使用举例相关推荐

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

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

  2. 二维码Data Matrix简介及在VS2010中的编译

    Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码 ...

  3. 开源二维码QR CODE编码/解码(识别)库

    在很近很近的未来,城市疏导局(前身是城市管理局)实行新政,秉持"用高科技提升城市形象"的原则,要给办证从业人员开辟专门的广告涂鸦墙,条件是:不得使用手工喷涂的字体,而必须改用工整的 ...

  4. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库 编码lib:Qrcode_swetake.jar         (官网介绍-- http://www.swetake.com/qr/index-e.html)          ...

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

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

  6. 二维码原理与编码介绍

    一 简介 二维条码(二维码)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的. 二维码是DOI(Digital Object Unique Identifier ...

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

    Aztec Code是1995年,由Hand HeldProducts公司的Dr. Andrew Longacre设计.它是一种高容量的二维条形码格式.它可以对ASCII和扩展ASCII码进行编码.当 ...

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

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

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

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

最新文章

  1. 2018-北航-面向对象-前三次OO作业分析与小结
  2. 修改Sublime Text3左侧导航字号大小及行高
  3. 编译FreeNOS报/usr/lib/grub/i386-pc/modinfo.sh doesn‘t exist错误
  4. 机器视觉行业市场现状及发展前景分析
  5. DeepNude已迅速下线,来看看它涉及的图像修复技术
  6. Mybatis的基本步骤
  7. 代码的c++实现_一文带你快速理解FreeRTOS代码规范~
  8. 【matplotlib笔记】plt.subplot()绘制子图
  9. shell多线程执行ping
  10. Spring动态的切换数据源
  11. 37. customer payment(1)
  12. Vrep/CoppeliaSim:基础操作(1)
  13. PLC_自动化控制系统_1_简说自动化控制系统
  14. 浓眉大眼的Google Wave怎么也会死?
  15. 【DL】为什么需要深度学习:模组化、端到端学习(语音识别、图像处理情景)、类比逻辑电路
  16. Java13都要来了,你还不了解Java8的新(旧)特性?
  17. 什么是构造方法,为什么要使用构造方法
  18. 权威一文解读人工智能等级考试证书超高含金量
  19. css让文字不停浮动
  20. 用JavaScript写一个类似于windows的气泡屏保效果

热门文章

  1. 学习《Linux设备模型浅析之设备篇》笔记(二)
  2. Photoshop抠图、污点处理等常用功能及快捷键
  3. 头戴式AR/VR 光学标定
  4. ATS插件中配置文件自动更新思路
  5. google gflags的参数解析,便捷实用
  6. Linux下查看Nginx,tomcat等的并发连接数和连接状态
  7. Django 数据库
  8. Why Sleeping May Be More Important Than Studying
  9. C/C++:*(p++)慎用!!!!!
  10. UVALive2678:Subsequence