当前位置: 首页 > article >正文

QT5+OpenCV+libdmtx识别datamatrx ECC200二维码

libdmtx开源库是一个专门用来读写 datamatrx 二维码的库。
相关资料文档如下

Documentation wiki:    libdmtx.wikidot.com
GitHub page:           github.com/dmtx/libdmtx
OhLoh.net page:        www.ohloh.net/projects/libdmtx
Open mailing list:     libdmtx-open_discussion@lists.sourceforge.net

下载和编译libdmtx库,因为使用QT5,直接用MinGW编译器,那QT5+OpenCV+libdmtx都用
相同的编译器编译。

1、libdmtx编译
下载libdmtx后,源码有说明MinGW编译,不过模拟linux下的太麻烦了;因为我喜欢简洁的方式,
我就直接用QT5创建了一个静态库工程 libdmtx,然后把头文件和c文件拷贝到工程里,或者pro里添加也可以;

编译完成后,相应的目录下会生成 libdmtxlib.a

2、下载MinGW编译的OpenCV,下载已经编译好的OpenCV,选择相应的版本,版本不对可能会有问题;
我这里下载的是 OpenCV-MinGW-Build-OpenCV-4.1.0-x64,开始下的最新版本一直有问题,没时间查了;
https://github.com/huihut/OpenCV-MinGW-Build
解压到相应的目录即可备用。


3、然后新建一个QT5应用程序工程,用来使用这个libdmtxlib.a静态库
这里直接使用相机的例程,可以用相机读取图像,相当于扫描一样,得到二维码图像,然后用这个库解码。

实现代码如下

#include "Dmtxlib.h"
void MainWindow::on_BtnCvDmtx_released()
{
    Mat src = imread("dmtx.jpg");
    if (!src.data){
        //cout << "Load image failed!" << endl;
        return;
    }

    Dmtxlib _Dmtxlib;
    DmtxMessage *msg;
    DmtxRegion *reg;

    DmtxImage *img;
    img = _Dmtxlib.dmtxImageCreate_(src.data, src.cols, src.rows, DmtxPack24bppRGB);
    DmtxDecode *dec = _Dmtxlib.dmtxDecodeCreate_(img, 1);
    reg = _Dmtxlib.dmtxRegionFindNext_(dec, NULL);
    if (reg != NULL) {
        msg = _Dmtxlib.dmtxDecodeMatrixRegion_(dec, reg, DmtxUndefined);
        if (msg != NULL) {
            cout << msg->output << endl;
            ui->labelResult->setText( QString::fromLocal8Bit((char*)msg->output));
            _Dmtxlib.dmtxMessageDestroy_(&msg);
        }
        _Dmtxlib.dmtxRegionDestroy_(&reg);
    }
    _Dmtxlib.dmtxDecodeDestroy_(&dec);
    _Dmtxlib.dmtxImageDestroy_(&img);
}

二维码图片

运行效果

(结束)


http://www.kler.cn/a/413836.html

相关文章:

  • Paddle Inference部署推理(十八)
  • C#开发合集
  • MD5算法加密笔记
  • 基础入门-Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离
  • npm install -g@vue/cli报错解决:npm error code ENOENT npm error syscall open
  • Redis持久化、主从及哨兵架构详解
  • 论文概览 |《Cities》2024.11 Vol.154(上)
  • 【tiler】一个数据可视化和地图处理切片的 Python 库
  • Rook入门:打造云原生Ceph存储的全面学习路径(上)
  • DAMODEL丹摩|部署FLUX.1+ComfyUI实战教程
  • MyBatis基本操作
  • 前端页面或弹窗在线预览文件的N种方式
  • python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)
  • YOLOv10改进,YOLOv10添加TransNeXt中的ConvolutionalGLU模块,CVPR2024,二次创新C2f结构
  • TypeScript 字面量类型与类型别名
  • Sqoop的安装和配置,Sqoop的数据导入导出,MySQL对hdfs数据的操作
  • AWS EC2设置用户名密码登录
  • 通过 SSH 进行WordPress网站的高级服务器管理
  • Android 16 开发者预览版抢先使用
  • 字节跳动青训营刷题笔记19
  • TDengine在debian安装
  • 【C++】C++新增特性解析:Lambda表达式、包装器与绑定的应用
  • 110KV地区变电站电气设计
  • LeetCode 3101. 交替子数组计数
  • ubuntu+ROS推视频流至网络
  • 源码分析Openlayers默认键盘交互实现