Qt&QZXing识别二维码

前言

最近在网上看到一篇博客,讲的是二维码的生成和识别

借用一下

ZXing
ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,包含了联系到其他语言的端口。
网址:https://code.google.com/p/zxing.

Libqrencode
Libqrencode(QRencode)是一个用C语言编写的用来解析二维条形码(QR Code)的程序库,Libqrencode通过手机的CCD摄像头来扫描二维条形码。二维码容量可达7000个数字或4000个字符,是非常强大的。
网址:http://fukuchi.org/works/qrencode/.

ZBar
ZBar是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台包括iPhone手机。同时 ZBar提供了二维码扫描的API开发包。
网址:http://zbar.sourceforge.net.
更多参考:http://sourceforge.net/apps/mediawiki/zbar/index.php.

Open Source QR Code Library
二维码编码/解码的Java库(J2SE, J2ME MIDP2.0/CLDC1.0)。
网址:http://qrcode.sourceforge.jp/index.html.en.

QZXing
Qt包装ZXing的解码库。
网址:http://sourceforge.net/projects/qzxing.
更多参考:https://projects.developer.nokia.com/QZXing.

然而本人能力有限,这里只选取了 QZXing 解码库,以后有时间在慢慢琢磨…

example:
img

QZXing

首先到github获取到源码

git clone https://github.com/ftylitak/qzxing.git

当然也可以下zip压缩包

How to include

qzxing上讲的还比较清楚…怎么使用img

  • 把QZXing目录直接复制到项目的根目录下,并且在项目的 .pro 中加入 include(../../src/QZXing.pri)

  • 或者把源码编译成动态库(dynamic library)

    qmake src/QZXing.pro
    make

使用

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "widget.h"
#include "ui_widget.h"
#include<QZXing.h>
#include<QPixmap>
#include<QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget){
ui->setupUi(this);
}
Widget::~Widget(){
delete ui;
}
#define FILE_PATH "/root/Desktop/l.png"
void Widget::on_pushButton_clicked(){
QPixmap pixmap(FILE_PATH);
ui->label->setPixmap(pixmap.scaled(ui->label->size()));
}
void Widget::on_pushButton_2_clicked(){
QZXing *decoder=new QZXing(this);
//设置解码格式
decoder->setDecoder(QZXing::DecoderFormat_QR_CODE);
//start decode
QString str= decoder->decodeImage(ui->label->pixmap()->toImage());
if (!str.isEmpty()){
ui->textEdit->setText(str);
}else{
ui->textEdit->setText("Failed!!");
}
}

当然,感兴趣的可以去看源码有解码就有编码,网上有很多库可以用,也可以自己写一个出来…不过这要技术到家…不过目前我正在学习使用 libqrencode ,可以到官网瞧瞧https://fukuchi.org/works/qrencode/


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!