qt在window实现二维码识别 您所在的位置:网站首页 电脑要怎么识别二维码 qt在window实现二维码识别

qt在window实现二维码识别

2024-07-09 21:47| 来源: 网络整理| 查看: 265

最近在研究二维码识别,看了很多博客,学到了许多,这里就不一一发出链接了CSDN中一搜一堆,我第一次用手机发博,不太会用,就简单发个近两天研究总结,虽然两天就搞出来了,但是感觉水分很大。直接上代码和视频效果吧 咦~不能上传视频,那就发个截图吧。 咦,文件也无法上传,回弄了之后再补链接。第一次发分享贴就要免费开源,大家一起学习哈。

 

-------------------分嗝符--------------------嗝~----------------------

充满元气的一天,可以在电脑继续编辑博客了

 首先挑几个重点的说一哈把,在pro里要包含红框部分的内容,一个是摄像头的,一个是二维码识别的

其次呢~ camera.h

#ifndef CAMERA_H #define CAMERA_H #include #include "mainwindow.h" #include #include #include #include #include namespace Ui { class camera; } class camera : public QWidget { Q_OBJECT public: explicit camera(QWidget *parent = 0); ~camera(); private slots: void on_pushButton_clicked(); void timeSlot(); void displayImage(int id, QImage image); void on_pushButton_2_clicked(); private: Ui::camera *ui; QCameraImageCapture *QCameraImg; QCamera *my_cam; }; #endif // CAMERA_H

在主次呢~camera.cpp

#include "camera.h" #include "ui_camera.h" #include QTimer *timer2; camera::camera(QWidget *parent) : QWidget(parent), ui(new Ui::camera) { ui->setupUi(this); timer2 = new QTimer(this); connect(timer2, SIGNAL(timeout()), this, SLOT(timeSlot()));//连接时间刷新函数 timer2->start(10); /*QString m_fileName="D:/QT/secretJL/software/SmartMemory/1111.png"; QImage img; //加载图像 if(!(img.load(m_fileName))) { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); return; } img = img.scaled(ui->label_image->width(),ui->label_image->height(),Qt::KeepAspectRatio); ui->label_image ->setPixmap(QPixmap::fromImage(img)); */ my_cam = new QCamera(this);//添加显示界面 my_cam->setCaptureMode(QCamera::CaptureVideo);//设置摄像头捕获模式 //my_cam->setViewfinder(ui->widget);//设置取景器 my_cam->start();//启动摄像头 QCameraImg = new QCameraImageCapture(my_cam);//截取图像 QObject::connect(QCameraImg, &QCameraImageCapture::imageCaptured, this, &camera::displayImage);//触发的信号为 } void camera::displayImage(int id, QImage image) { image = image.scaled(ui->label_image->width(),ui->label_image->height(),Qt::KeepAspectRatio); ui->label_image->setPixmap(QPixmap::fromImage(image));//将捕获的图片映射到label中 QDateTime qtimeObj = QDateTime::currentDateTime(); QZXing decode; QString str = decode.decodeImage(image); if(str.isEmpty()==false){ ui->lineEdit->setText(str); timer2->stop(); //my_cam->stop(); } else ui->lineEdit->setText(tr("未识别到条形码图片!%1").arg(qtimeObj.toString("yyyyMMddhhmmsszzz"))); } void camera::on_pushButton_2_clicked() { /*拍照按钮槽*/ my_cam->start();//启动摄像头 timer2->start(10); QCameraImg->capture();//拍照获取一帧 } /*保存照片*/ /* void camera::on_pushButton_3_clicked() { QCameraImg->capture();//拍照获取一帧 const QPixmap *pixmap = ui->label_image->pixmap(); if(pixmap) pixmap->save("D:\\img.png"); else qDebug()label_image->width(),ui->label_image->height(),Qt::KeepAspectRatio); ui->label_image ->setPixmap(QPixmap::fromImage(img)); QZXing decode; QString str = decode.decodeImage(img); if(str.isEmpty()==false) ui->lineEdit->setText(str); else ui->lineEdit->setText("未识别到条形码图片!"); } }

然后程序就完毕了,效果如下

啥也么有,放个手机qq码把,鸡贼的小伙伴可以趁机加扣扣一起讨论噢

在放个对比图吧,一个是在某位大博主那里下载的二维码扫面器,一个是自己这个简易软件识别的,结果一模一样哦

目前发现我这个缺点就是不能 识别出条形码的编码格式,只能之别二维码,而大博的二维码扫描器却可以都识别,同样都是QZXing,难道这就是新手与大鸟的差距,不行不行,找时间给补上,然后在更新出来吧。

附上我的工程文件,大博的二维码扫描器就不发了,毕竟人家44币呢

文件下载链接  htts://download.csdn.net/download/qq_37603131/11105906



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有