欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > QT5+OpenCV+libdmtx识别datamatrx ECC200二维码

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

2024/11/29 23:13:45 来源:https://blog.csdn.net/ljygood2/article/details/144058453  浏览:    关键词: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);
}

二维码图片

运行效果

(结束)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com