• Data Matrix码的使用


    一、引言       

            Data Matrix原名Data code,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明。Data Matrix又可分为ECC000-140与ECC200两种类型,ECC000-140具有多种不同等级的错误纠正功能,而ECC200则透过Reed-Solomon演算法产生多项式计算出错误纠正码,其尺寸可以依需求印成不同大小,但采用的错误纠正码应与尺寸配合,由于其演算法较为容易,且尺寸较有弹性,故一般以ECC200较为普遍。【百度百科】

            目前能实现检测与识别库有libdmtx库和zxing。这里以libdmtx库为例,进行检测与识别。

    二、环境配置与编译

            在c++ windows vs环境中,环境配置还是有些麻烦的。从上述链接中下载所需libdmtx源文件(本人使用的是0.7.5版本)。

    1. 新建vs项目,我这里是新建一个编译成静态库项目;
    2. 解压下载的libdmtx文件,将libdmtx-0.7.5/目录下的所有文件(有24个文件)复制到新建项目的根目录;如下所示;

    3. 将复制的文件添加到这个项目文件结构中,如下图所示;

    4. 修改预编译头属性(不使用预编译头),如下图所示;

    5. 选择编译为C代码,如下图所示;

    6. 将#include "dmtx.h"和#include "dmtxstatic.h"两个头文件分别添加到上述第3步中源文件下每一个.c文件里;
    7. 将float.h、stdio.h、limits.h、assert.h、math.h文件增加到dmtx.h中;注释掉dmtx.c文件里包括的.c文件;
    8. 将项目查找到CHKERR、CHKSCHEME、CHKSIZE、CALLBACK_MATRIX、ISDIGIT、CALLBACK_POINT_PLOT等的定义中复制到dmtx.h中;
    9. 将静态库程序里面的snprintf函数用sprintf_s函数替代;
    10. 出现诸如下图所示的错误,可以将声明与定义该函数的static删掉(本人采用的方法),也可以用非静态函数进行二次封装(工作量大);
       

            如果按照上述进行操作,大概就能如下所示编译出静态库了。前九个步骤还是好操作的,第十个花时间,如果使用,可以移步这里。这是我调整好的代码。

     三、运用

            安装上述方式编译,得到windows环境下动态库,使用方式可以参考如下。首先新建QRCode属性表,如下所示:

             配置包含目录及库目录,如下:

             最后配置附加依赖项,如下:

             本人进行二次封装后,使用效果如下:

     

  • 相关阅读:
    SpringCache--缓存框架 ----苍穹外卖day7
    《工程伦理与学术道德》第二章习题
    解锁数据库运维秘籍:掌握AntDB-T动态共享内存,提升进程间通信效率
    zlog 简易手册
    web安全day03
    论文阅读《LSD-SLAM: Large-Scale Direct Monocular SLAM》
    一篇文章教你Pytest快速入门和基础讲解,一定要看
    GitHub2022年度前100的Java面试真题&高频知识点汇总
    完整NFT Web开发
    视频编解码学习之一:理论基础
  • 原文地址:https://blog.csdn.net/qq_31112205/article/details/127648291