QT+QZXing_sourceV2.4开源库识别一维码和二维码

简介:

由于最近项目需要识别一维码和二维码,为了节省开发时间,在网上找了一维码和二维码识别的开源库。最终发现QZXing_sourceV2.4能同时支持识别一维码和二维码,于是就去下载了QZXing_sourceV2.4移植到自己的项目,移植完一测试发现识别率并不是很理想,经过一番折腾(修改QZXing_sourceV2.4的源码,优化算法等等),不管怎么修改识别率始终不理想,到最后还是得自己写识别算,不过自己写时从QZXing_sourceV2.4得到了很多帮助,所以有必要记录一下QZXing_sourceV2.4的使用,下面介绍QZXing_sourceV2.4在QT上的简单使用(后面会分别介绍自己写每种码的识别算法)。

第一步:准备工作。

1.1、下载QZXing_sourceV2.4库:下载地址:https://download.csdn.net/download/cwj066/10671098

1.2、一台安装有QT Creator软件的电脑(ubuntu下安装或者windows下安装都可以,因为QZXing_sourceV2.4是跨平台的)。

第二部:在QT上配置使用QZXing_sourceV2.4库。

2.1、打开QT Creator新建一个名字为testQZXing的工程

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第1张图片

2.2、把QZXing_sourceV2.4库拷贝到新建的工程目录下

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第2张图片

2.3、打开testQZXing.pro文件,在testQZXing.pro文件加入下面的语句

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第3张图片

2.4、在MainWindow.cpp引入头文件

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第4张图片

在界面文件添加一下控件

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第5张图片

在打开的按钮的点击槽函数添加以下识别代码

void MainWindow::on_pushButton_clicked()
{
    //1 弹出选择文件对话框,选择要识别的图片
    QString fileName = QFileDialog::getOpenFileName(this, tr("choose a picture"),
                                                    QApplication::applicationDirPath(),
                                                   tr("all Files (*.*)"));
    //2 显示到编辑框
    ui->lineEdit->setText(fileName);

    //3 显示位图到label
    ui->label_3->setPixmap(QPixmap(ui->lineEdit->text()));

    //4 加载图片
    QImage img;
    qDebug() << img.load(fileName);

    QTime findTime;
    findTime.restart();

    //5 图片宽高
    int iWidth = img.width();
    int iHeight = img.height();

    //6 调用QZXing的函数进行二维码扫描
    QZXing decoder;
    QString qrmsg = decoder.decodeImage(img, iWidth, iHeight, false);
    qDebug() << "spend time = " << findTime.elapsed() << qrmsg;

    ui->textEdit->setText(qrmsg);
}

 程序运行如果如下

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第6张图片

第三步:测试

3.1、识别一维码

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第7张图片

3.2、识别二维码

QT+QZXing_sourceV2.4开源库识别一维码和二维码_第8张图片

你可能感兴趣的:(开源库编译及使用)