Qt 识别 DM 码

2023-11-14

识别普通二维码网上库很多,这个库专门识别 DM码

下载libdmtx

https://github.com/dmtx/libdmtx

添加源码到Qt 工程

libdmtx.pri

INCLUDEPATH +=$$PWD

HEADERS += \
    $$PWD/libdmtx/dmtx.h \
    $$PWD/libdmtx/dmtxstatic.h

SOURCES += \
    $$PWD/libdmtx/dmtx.c \
    $$PWD/libdmtx/dmtxbytelist.c \
    $$PWD/libdmtx/dmtxdecode.c \
    $$PWD/libdmtx/dmtxdecodescheme.c \
    $$PWD/libdmtx/dmtxencode.c \
    $$PWD/libdmtx/dmtxencodeascii.c \
    $$PWD/libdmtx/dmtxencodebase256.c \
    $$PWD/libdmtx/dmtxencodec40textx12.c \
    $$PWD/libdmtx/dmtxencodeedifact.c \
    $$PWD/libdmtx/dmtxencodeoptimize.c \
    $$PWD/libdmtx/dmtxencodescheme.c \
    $$PWD/libdmtx/dmtxencodestream.c \
    $$PWD/libdmtx/dmtximage.c \
    $$PWD/libdmtx/dmtxmatrix3.c \
    $$PWD/libdmtx/dmtxmessage.c \
    $$PWD/libdmtx/dmtxplacemod.c \
    $$PWD/libdmtx/dmtxreedsol.c \
    $$PWD/libdmtx/dmtxregion.c \
    $$PWD/libdmtx/dmtxscangrid.c \
    $$PWD/libdmtx/dmtxsymbol.c \
    $$PWD/libdmtx/dmtxtime.c \
    $$PWD/libdmtx/dmtxvector2.c

使用
在.pro添加

include($$PWD/libdmtx.pri)

它给的例子是使用opencv的cv::mat,这里我们用QImage取代它

#include "libdmtx/dmtx.h"

int QRCodeTool::dataMatrixDecode(const QString &imageName)
{
    QImage image;
    if(!image.load(imageName)){
        qWarning()<<"image load fail !!!";
        return -1;
    }
    if(image.format() == QImage::Format_Mono){
        image = image.convertToFormat(QImage::Format_ARGB32);
        qDebug()<<"image.format() "<<image.format();
    }

    int pack = DmtxPack32bppXRGB;
    switch(image.format())
    {
    case QImage::Format_ARGB32:
        pack = DmtxPack32bppXRGB;
        break;
    case QImage::Format_RGB32:
        pack = DmtxPack32bppXRGB;
        break;
    case QImage::Format_RGB888:
        pack = DmtxPack24bppRGB;
        break;
    case QImage::Format_Indexed8:
        pack = DmtxPack8bppK;
        break;
    case  QImage::Format_Grayscale8:
        pack = DmtxPack8bppK;
    }
    int width = image.width();
    int height = image.height();

    DmtxImage* img = dmtxImageCreate(image.bits(), width, height, pack);//DmtxPack32bppRGBX,DmtxPack24bppRGB
    if (!img) {
        fprintf(stderr, "dmtx image create fail\n");
        return -1;
    }

    DmtxDecode *dec = dmtxDecodeCreate(img, 1);
    DmtxRegion *reg = Q_NULLPTR;
    DmtxMessage *msg = Q_NULLPTR;

    reg = dmtxRegionFindNext(dec, Q_NULLPTR);
    if (reg)  //如果检测到存在DM码区域
    {
        msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);  //解析DM码
        if (msg)  //如果DM码解析成功
        {
            std::cout << "DataMatrix Decode Result: " << msg->output << std::endl;
            dmtxMessageDestroy(&msg);
        }
        dmtxRegionDestroy(&reg);
    }
    dmtxDecodeDestroy(&dec);
    dmtxImageDestroy(&img);
    return 0;
}

生成一维码/二维码

https://blog.csdn.net/u012020854/article/details/113061811

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 识别 DM 码 的相关文章

  • Qt5 C++ 自动鼠标点击

    我正在尝试制作一个应用程序 其中鼠标移动到屏幕上的某些位置并自动单击左键 问题是我无法在 Qt 应用程序外部单击 因此我做了一个解决方法 使应用程序对鼠标单击透明并使用以下代码使其全屏显示 int x 800 int y 500 this
  • 如何使用索引访问ListView中的委托属性

    我想访问委托属性ListView 我尝试过contentItem但有时是undefined 这是我的代码 ListModel id modeldata ListElement name don rank 1 ListElement name
  • QT5文本渲染问题

    我在基于 MIPS 的平台上交叉编译了 QT5 每当我运行包括示例应用程序 其中包含文本 的应用程序时 它首先绘制文本 然后使用文本颜色的 矩形 填充来绘制文本区域 所以最后我在所有显示文本的地方看到了一个黑色矩形 如果我改变文本颜色 矩形
  • 如何使用 GoogleTest 框架漂亮地打印 QString?

    我将 GoogleTest GTest 框架与 Qt5 应用程序结合使用 每当使用 QString 参数的测试失败时 框架就会尝试打印所有涉及的值 但是 它无法自动处理外部类型 本例中为 Qt5 的 QString QString test
  • 如何增加 QListWidget 中项目/行的填充(或边距)?

    我们正在寻找一种方法来增加填充 或边距 QListWidget我们正在我们的应用程序中使用 我们希望为所有四个方向增加此值 以便为列表中的文本提供一些额外的空间 我查看了两者的文档QListWidget http doc qt io qt
  • QML:原始模型中的动态视图重新排序

    使用此 Qt 教程通过拖动视图项来实现 QML 动态视图排序 QML 动态视图排序教程 https doc qt io qt 5 qml dynamicview tutorial html 原始底层模型是QAbstractListModel
  • 本机 KDE 查找 Qt 5 应用程序

    我在 Kubuntu 12 10 Linux 机器上安装了 Qt5 和 Qt4 并注意到以下内容 使用 Qt4 编译的程序具有原生 KDE 外观和感觉 我使用默认的 KDEOxygen主题 我的程序也是如此 注意带有标题的平滑渐变和聚焦小部
  • Qt 颜色选择器小部件?

    我有一个QDialog向用户提供一些选项供其选择的子类 这些选项之一是颜色 我见过QColorDialog https stackoverflow com a 1972272 2062384 我需要一些更简单的东西 这也是一个常规小部件 这
  • 如何向 QFileSystemModel 添加自定义角色

    我想向 QFileSystemModel 添加自定义角色 可能是派生模型 我想使用此角色来保存复选框的选中状态 该状态显示在自定义委托中的文件名旁边 如何才能做到这一点 我已经使用过使用示例Qt Quick Controls 文件系统浏览器
  • QVBoxLayout:如何使用 Qt 设计器将小部件对齐到顶部

    我仅将 qt 设计器用于 ui 布局 这与这个问题几乎是同一个问题 QVBoxLayout 如何将小部件垂直对齐到顶部而不是中心 https stackoverflow com questions 10082299 qvboxlayout
  • 悬停时突出显示自定义 QWidgetAction

    我的应用程序有一个QMenuBar与一些QMenus 其中每个都有多个QActions 和子QMenus 大部分的QAction 项目是衍生品QWidgetAction并重新实施QWidgetAction createWidget方法 通常
  • 如何实时返回鼠标坐标?

    我是 PyQt 的新手 我正在尝试使用它来创建一个实时返回鼠标位置的小部件 这是我所拥有的 import sys from PyQt5 QtWidgets import QWidget QToolTip QPushButton QAppli
  • 如何使用 Linux 帧缓冲区旋转 Qt5 应用程序?

    我有一个直接在 Linux 帧缓冲区 无 x Windows 上运行的嵌入式 Linux 应用程序 现在我们必须将显示屏物理旋转 180 度 如何让我的 Qt 应用程序旋转 使其不会出现颠倒 我看到参考使用以下选项 platform lin
  • 错误“标记不是预处理器子表达式中的有效二元运算符”

    如果我构建并运行一个项目 基本上是由 Mac OS 10 6 上的 Qt 框架生成的存根 我会得到以下错误输出 Users home Qt5 0 1 5 0 1 clang 64 include QtCore qisenum h 53 Er
  • 如何将基于 Qt4.6 Phonon 的媒体应用程序移植到 Qt 5.1?

    我有一个基于 Qt 4 6 的应用程序 它使用 QtWebView 加载带有标签的 HTML 页面 以便在 Windows 平台上播放网络多媒体源 我没有使用默认的 PHONON 播放引擎 而是构建了另一个 PHONON 后端引擎来处理媒体
  • QGeoCoordinate:没有这样的文件或目录

    我正在尝试使用 QtLocation 但不能 我不明白为什么 我在 ubuntu 14 04 上使用 qt5 3 2 这很奇怪 因为我将这一行添加到我的 pro 文件中 QT network CONFIG mobility MOBILITY
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • (如何)我可以抑制未找到包配置文件的警告吗?

    我正在尝试创建一个CMakeLists txt尝试查找的文件Qt5 如果失败 则尝试回退到Qt4安装 该脚本到目前为止有效 但如果出现以下情况我总会收到警告Qt5未安装 注意FindQt5 cmake是由提供Qt5并且仅当以下情况时才可用Q
  • 如何将图像显示为缩略图

    我有一个QTreeView显示硬盘驱动器和目录 我也有一个QListView显示图像文件如下 但我想将图像显示为缩略图 如下所示 My code mainWidget mainWidget QWidget parent QWidget pa
  • 如何使用meta-toolchain-qt5构建Qt(带有QtWebEngine支持)?

    我正在尝试使用构建 Qtmeta toolchain qt5 但是当我通过这样做时poky glibc x86 64 meta toolchain qt5 cortexa7hf vfp vfpv4 neon toolchain 2 0 1

随机推荐

  • DSA算法

    DSA 本文主要叙述在CTF中的DSA 根据我自己的理解重述一遍CTF wiki对DSA的描述 公私钥的生成 选择一个哈希函数 H H H 一般选作SHA1 选择比特数为
  • linux diff 补丁文件夹,diff打补丁详解

    对于开源源码修改过程中的必经阶段 对源码打补丁 总是不够精通 搜索了补丁的原理的详细过程 如下 在移植或版本升级过程中 手动比对 用比对工具 转换是很费力的事情 特别是发生变化的文件非常多的情况下 制作补丁 打补丁 可以简化这个过程 主要用
  • Diffie-Hellman(迪菲-赫尔曼)秘钥交换

    Diffie Hellman算法是Whitefield Diffie和Martin Hellman在1976年公布的一种秘钥交换算法 它是一种建立秘钥的方法 而不是加密方法 所以秘钥必须和其他一种加密算法结合使用 这种秘钥交换技术的目的在于
  • Centos7 配置zookeeper 开机自启动

    昨天参考网上的相关教程 Centos7安装Zookeeper3 4 12并实现开机自动 今天早上开启虚拟机 查看zookeeper 的服务状态 切换至zookeeper 的安装目录 cd usr local zookeeper zookee
  • HTML <template> 标签

    实例 使用
  • 【游戏客户端面试题干货】--2021年最新游戏客户端面试干货(lua篇)

    游戏客户端面试题干货 2021年度最新游戏客户端面试干货 lua篇 大家好 我是Lampard 经过春招一番艰苦奋战之后 我终于是进入了心仪的公司 今天给大家分享一下我在之前精心准备的一套面试知识 今天和大家分享的是lua的面试题 本人亲测
  • 欧姆龙NJ系列入门

    1 指示灯 SD卡旁边有个按钮 按下按钮之后SD卡断电 并且需要取出SD卡重新安装或者断电重启 plc 才能上电 2 电源模块 电源模块和 plc 是可以分开的 这是电源模块 这是 plc NJ PA3001 NJ PD3001供电电压不一
  • useCallback和useMemo

    或许大家都明白useCallback一个这样的作用 为了性能优化 但是怎么去用它才能达到性能优化呢 因为我曾经看到过有同事 碰到点击事件就用useCallback包裹起来 但是这样真的是能优化吗 今天我们就来捋一捋 useCallback
  • Thinkphp 5.0整合支付宝即时到账最新接口,含模型验证完整实例

    今年thinkphp推出了5 0版本 相比以往版本更轻更便捷了 由于业务需要使用支付宝支付 兔子工程整合了支付宝支付接口 在此分享给各位奋战在一线的攻城狮们 希望对你们有帮助 传送门 Thinkphp 5 0版本整合微信扫码支付接口 本文所
  • c++ 拷贝构造函数中形参对象可以直接访问private变量

    恩 就酱
  • 栈的基本操作(C语言)

    本文只有代码 介绍了有关栈的基本操作 已经过调试没有很大问题 如有错误 还请批评指正 一 栈的实现和表示 pragma once define CRT SECURE NO WARNINGS include
  • StringIndexOutOfBoundsException: String index out of range: 458

    报错信息 org springframework dao TransientDataAccessResourceException Error updating database Cause java sql SQLException ja
  • Week 2 Git & Github 6: Rollback

    git revert HEAD 回退最新的一次commit 但是并不会撤销之前的commit记录 只是提交一次新的commit 将文件内容修改到上次commit之前的样子 到这里 我们已经学完了几乎所有的撤销更改的命令了 包括 git ch
  • 如何使用万用表测量二极管的阻值

    如何使用万用表测量二极管的阻值 1 测量时 选用万用表的 欧姆 挡 一般用R x100或R xlk挡 而不用Rx1或R x10k挡 因为Rxl挡的电流太大 容易烧坏二极管 R xlok挡的内电源电压太大 易击穿二极管 2 将两表棒分别接在二
  • 在MacOS下使用Fiddler抓包

    在MacOS下使用Fiddler抓包 在MacOS下使用Fiddler抓包 有两种方式 分别是安装Mac版的Fiddler 或者是用虚拟机 安装Windows系统 在Windows系统下运行Fiddler对Mac系统中的内容进行抓包 Mac
  • AES128加密算法的实现(C/Java/C#)

    最近项目中有一个需求 实现AES128的加密算法 用于硬件和平台的通信 硬件加密部分使用C语言完成 平台有两种不同的环境 java Linux 和C Windows 在网上搜集了一些资料 有人实现过纯C代码的AES加密解密算法 这样实际上有
  • Java 新特性 UpdateWrapper-(修改指定字段)

    UpdateWrapper的使用 UpdateWrapper的使用 修改指定id的名字 可在后增加条件 常用的连接条件 UpdateWrapper的使用 QueryWrapperLambdaQueryWrapper 条件查询 修改指定id的
  • 在 WebStorm 中开发 uni-app

    代码已上传至github github代码地址 https github com Miofly mio git CLI 工程 全局安装 vue cli 3 x 如已安装请跳过此步骤 npm install g vue cli 通过 CLI
  • JavaScript 常见鼠标事件

    常见鼠标事件类型1 1 click鼠标左键点击 2 mousedown 鼠标按下时触发 3 mouseup 鼠标弹起时触发 4 mousemove move移动 鼠标在固定的位置一移动就触发移动 就触发 5 mouseenter 鼠标移入触
  • Qt 识别 DM 码

    Qt 识别 DM 码 下载libdmtx 添加源码到Qt 工程 生成一维码 二维码 识别普通二维码网上库很多 这个库专门识别 DM码 下载libdmtx https github com dmtx libdmtx 添加源码到Qt 工程 li