日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 识别 DM 码

發布時間:2024/8/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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添加

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,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(&reg);}dmtxDecodeDestroy(&dec);dmtxImageDestroy(&img);return 0; }

生成一維碼/二維碼

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

總結

以上是生活随笔為你收集整理的Qt 识别 DM 码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。