Qt 识别 DM 码
生活随笔
收集整理的這篇文章主要介紹了
Qt 识别 DM 码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Qt 識別 DM 碼
- 下載libdmtx
- 添加源碼到Qt 工程
- 生成一維碼/二維碼
識別普通二維碼網上庫很多,這個庫專門識別 DM碼
下載libdmtx
https://github.com/dmtx/libdmtx
添加源碼到Qt 工程
libdmtx.pri
INCLUDEPATH +=$$PWDHEADERS += \$$PWD/libdmtx/dmtx.h \$$PWD/libdmtx/dmtxstatic.hSOURCES += \$$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添加
它給的例子是使用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,DmtxPack24bppRGBif (!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(®);}dmtxDecodeDestroy(&dec);dmtxImageDestroy(&img);return 0; }生成一維碼/二維碼
https://blog.csdn.net/u012020854/article/details/113061811
總結
以上是生活随笔為你收集整理的Qt 识别 DM 码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DM使用过程中几个常见的问题
- 下一篇: webuploader多图片上传php,