简介:
由于最近项目需要识别一维码和二维码,为了节省开发时间,在网上找了一维码和二维码识别的开源库。最终发现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的工程
2.2、把QZXing_sourceV2.4库拷贝到新建的工程目录下
2.3、打开testQZXing.pro文件,在testQZXing.pro文件加入下面的语句
2.4、在MainWindow.cpp引入头文件
在界面文件添加一下控件
在打开的按钮的点击槽函数添加以下识别代码
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);
}
程序运行如果如下
第三步:测试
3.1、识别一维码
3.2、识别二维码