简述

二维码(QR Code)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的。是所有信息数据的一把钥匙。应用十分广泛,如:产品防伪/溯源、广告推送、网站链接、数据下载、商品交易、定位/导航、电子凭证、车辆管理、信息传递、名片交流、wifi共享等。

二维条码常用的码制:

Data Matrix、MaxiCode、Aztec、QR Code、Vericode、PDF417、Ultracode、Code 49、Code 16K等。

二维码与一维码

二维码与一维码的对比:

  • 一维码:只能在一个方向(一般是水平方向)上表达信息,只能由数字和字母组成。
  • 二维码:在水平和垂直方向都可以存储信息,能存储汉字、数字和图片等信息。

可以看出,二维码是一种比一维码更高级的条码格式,应用领域也要广得多。

二维码官网:

二维码编码/解码库:

  1. ZXing

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

    网址:https://code.google.com/p/zxing.

  2. Libqrencode

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

    网址:http://fukuchi.org/works/qrencode/.

  3. ZBar

    ZBar是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台包括iPhone手机。同时 ZBar提供了二维码扫描的API开发包。

    网址:http://zbar.sourceforge.net.

    更多参考:http://sourceforge.net/apps/mediawiki/zbar/index.php.

  4. Open Source QR Code Library

    二维码编码/解码的Java库(J2SE, J2ME MIDP2.0/CLDC1.0)。

    网址:http://qrcode.sourceforge.jp/index.html.en.

  5. QZXing

    Qt包装ZXing的解码库。

    网址:http://sourceforge.net/projects/qzxing.

    更多参考:https://projects.developer.nokia.com/QZXing.

QZXing解码

效果

编译

下载QZXing之后,解压缩(E:/Qt/QZxing),然后进行编译,编译完成后,会生成:QZXing2.dll、QZXing2.lib。

将对应的库文件拷贝至当前lib目录下,在pro中进行如下配置:

LIBS += -L$$PWD/lib -lQZXing2

INCLUDEPATH += E:/Qt/QZxing

源码

识别二维码

void MainWindow::showQRCode(const QString &file)
{
if (!file.isEmpty())
{
QPixmap pixmap(file);
m_pImageLabel->setPixmap(QPixmap(file));
m_pPathLineEdit->setText(file); // 二维码解码
QZXing *pDecoder = new QZXing(QZXing::DecoderFormat_MAXICODE);
QString strQRCode = pDecoder->decodeImage(pixmap.toImage()); if (!strQRCode.isEmpty())
{
m_pDetailsEdit->setTextColor(QColor(230, 230, 230));
m_pDetailsEdit->setText(strQRCode);
}
else
{
m_pDetailsEdit->setTextColor(Qt::red);
m_pDetailsEdit->setText(QString::fromLocal8Bit("识别二维码信息失败!"));
}
}
}

如下,是我用QZXing实现的一个二维码扫描器:

下载地址:http://download.csdn.net/detail/u011012932/6594155.

友情提示:关于jpg等格式的识别,需要拷贝imageformats文件夹与可执行文件(*.exe)保持同一目录级别。。。

Qt之二维码扫描的更多相关文章

  1. XAMARIN ANDROID 二维码扫描示例

    现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile  做一个简单的 Android 条码扫描示 ...

  2. [Unity3D]自制UnityForAndroid二维码扫描插件

    一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...

  3. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

  4. Android仿微信二维码扫描

    转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...

  5. Android—ZXing二维码扫描遇到的问题

    最近工作中需要开发带有二维码扫描功能的软件(基于开源项目ZXing),遇到的问题记录一下,也希望给大家带来帮助. 1.首先因为扫描要开摄像机所以加权限是一定的,不然后面什么都不能进行 <uses ...

  6. Ios二维码扫描(系统自带的二维码扫描)

    Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...

  7. iOS 自带二维码扫描功能的实现

    自从iOS7以后中新增了二维码扫描功能.因此可以在不借助第三方类库的情况下简单的写出二维码的扫描功能: 原生的二维码扫描功能在AVFoundation框架下,所以在使用原生的二维码扫描功能时要先导入A ...

  8. PhoneGap(二维码扫描 )

    关于 phoneGap 如何做 二维码扫描 1.        先配置好, 环境 http://coenraets.org/blog/cordova-phonegap-3-tutorial/http: ...

  9. 如何用MediaCapture解决二维码扫描问题

    二维码扫描的实现,简单的来说可以分三步走:“成像”.“截图”与“识别”. UWP开发中,最常用的媒体工具非MediaCapture莫属了,下面就来简单介绍一下如何利用MediaCapture来实现扫描 ...

随机推荐

  1. I - Agri-Net

    I - Agri-Net poj 1258 注意:多组数据输入. #include<cstdio> #include<cstring> #include<iostream ...

  2. iOS库--.a与.framework

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的差别? 静态库:链接时完整地拷贝至可运行文件里.被多次使用就有多份冗余拷贝. 动态库:链接时不复制.程序执行时由系 ...

  3. Android nomedia 避免图片等资源泄露在系统图库其中

    总结 Android nomedia 避免文件泄露在系统图库和系统铃声中 在应用开发中 项目的图片总是被系统的图库收录了 避免图片被系统图库收录的发现有2个方法 第一种针对图片 将 .png为后缀的图 ...

  4. hdu 3074 求区间乘积

    线段树水题 #include<stdio.h> #include<string.h> #include<iostream> using namespace std; ...

  5. [Oracle] - Connect to a PDB of Oracle12c

    Story about CDB and PDB Oracle12c has a new feature and definition of CDB and PDB. If you first use ...

  6. angularjs1-过滤器

    <!DOCTYPE html> <html> <body> <header> <meta http-equiv="Content-Typ ...

  7. VIM7.4 编译安装 开启python

    https://github.com/wklken/k-vim ./configure --prefix=/usr/local/vim74 \--with-features=huge \--enabl ...

  8. python类的继承和多态,获取对象信息

    继承 类的继承机制使得子类可以继承父类中定义的方法,拥有父类的财产,比如有一个Animal的类作为父类,它有一个eat方法: class Animal(object): def __init__(se ...

  9. Linux操作系统下Oracle主要监控工具介绍

    Oracle监控包括有效且完全地监控Oracle数据库的性能.可用性和使用率等统计量,还包括即时的错误通知和纠正措施,并提供全面的报表和图表.本文中主要介绍几种Linux操作系统下Oracle主要监控 ...

  10. Linux就该这么学 20181011(第十五章邮件)

    参考链接:https://www.linuxprobe.com. https://www.linuxprobe.com/chapter-15.html 电子邮箱系统 foxmail MUA 发送 MT ...