20180406初次接触二维码识别程序QZXing

本文记录了作者2018年4月6日首次接触二维码识别库QZXing的过程,详细介绍了如何使用QZXing进行二维码读取,包括安装、配置和基本用法,为初学者提供了入门指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好奇驱使,百度百科了一下二维码,然后想尝试通过编程识别几个维码。
第一步是找到合适的二维码识别程序。伟大的程序员们已经把 二维码识别程序开源了,我选择了gooogle公司的ZXing。
https://github.com/zxing/zxing
介绍就一句话: ZXing ("Zebra Crossing") barcode scanning library for Java, Android
翻译过来是:ZXing是一个条码扫描库,支持Java和Android。

这个支持的条码格式如下表:
1D product1D industrial2D(二维码)
UPC-ACode 39QR Code
UPC-ECode 93Data Matrix
EAN-8Code 128Aztec (beta)
EAN-13CodabarPDF 417 (beta)
 ITFMaxiCode
 RSS-14 
 RSS-Expanded

还有一些基于ZXing的第三方程序,它们适配各种编程语言。因为,我习惯用C/C++开发程序,且最近正在学习QT,所以选择了 QZXing。
第二步是使用QZXing。我在https://github.com/ftylitak/qzxing/releases页面下载了 QZXing_sourceV2.4.zip,只有353KB,太好了,因为我的歌华宽带访问 github.com的速度真是太慢了,不知你们的怎么网速怎么样?解压后,用Qt Createor打开其中的工程,编译出Debug版。在build-QZXing-Desktop_Qt_5_10_0_MinGW_32bit-Debug\debug目录下得到2个重要文件:libQZXing2.a(等同于lib文件)和QZXing2.dll(不用解释了吧)。然后在我的工程中添加库,选择 libQZXing2.a即可。帖上代码:
QString fileName = QFileDialog:: getOpenFileName( this,
          tr("打开二维码文件"), NULL, tr("二维码文件 (*.png *.jpg *.bmp)"));
    QZXing *qZxing = new QZXing(this);
    //qZxing->setDecoder(QZXing::DecoderFormat_QR_CODE | QZXing::DecoderFormat_EAN_13 );
    QImage imageToDecode(fileName);
    QString strCode = qZxing->decodeImage(imageToDecode);
     //QString strCode = qZxing->decodeImageFromFile(fileName);//TODO 失败了
     ui->ed2DCode->setText(strCode);
 
 
    int with = ui->lb2DCode->width();
    int height = ui->lb2DCode->height();
    //QPixmap fitpixmap = pixmap.scaled(with, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);  // 饱满填充
    QImage fitpixmap = imageToDecode.scaled(with, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);  // 按比例缩放
    ui->lb2DCode->setPixmap(QPixmap::fromImage(fitpixmap));
 
代码的意思是选择一个二维码文件,得到其QImage对象,然后用QZXing去解码这个QImage对象,得到一个QString,后面的代码是在QLable中按比例缩放显示二维码文件。需要说明的是采用 qZxing->decodeImageFromFile只得到一个空字符串。不去深究了,有能工作的就OK了。以下是我解码的几个二维码。
       首先是网页版微信登录使用的二维码,它对应的文字是https://login.weixin.qq.com/l/wfzgb86dKA==
      第二个是我的微信二维码,它对应的文字是https://u.wechat.com/EALebLzIfjaNxLdx4MP1prA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值