简述

二维码(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. BA--近零能耗示范楼(西门子-中国建筑科学研究院院内)

    中国建筑科学研究院院内的一栋办公楼使用了西门子的全套楼控.节能.消防.远景开关面板技术,每年的能耗为25kwh,远低于国家绿色能源标准.

  2. cogs 969. [NOIP2006] 数列

    969. [NOIP2006] 数列 ★☆   输入文件:sequenc.in   输出文件:sequenc.out   简单对比时间限制:1 s   内存限制:162 MB 题目描述 给定一个正整数 ...

  3. git-osc自己定义控件之:CircleImageView

    git-osc自己定义控件之:CircleImageView 一.CircleImageView的使用 在项目中能够发现,用户的头像都是圆形的.感觉非常好奇,昨天最终发现了,原来是自定了一个Image ...

  4. Android Drawable 那些不为人知的高效使用方法

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43752383,本文出自:[张鸿洋的博客] 1.概述 Drawable在我们平时的 ...

  5. 为data盘加入磁盘(asm external)

    1.创建盘,并两个节点皆能够訪问. 2.检查集群状态 [grid@rac1 ~]$ crsctl status res -t ------------------------------------- ...

  6. 用 C 语言编写一个简单的垃圾回收器

    人们似乎觉得编写垃圾回收机制是非常难的,是一种仅仅有少数智者和Hans Boehm(et al)才干理解的高深魔法.我觉得编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc例 ...

  7. Nginx系列(三)--管理进程、多工作进程设计

    Nginx由一个master进程和多个worker进程组成,但master进程或者worker进程中并不会再创建线程. 一.master进程和worker进程的作用 master进程 不须要处理网络事 ...

  8. Gradle之依赖管理

    Gradle之依赖管理 泡在网上的日子 / 文 发表于2015-01-29 16:12 第8824次阅读 Gradle,Android Studio 2 编辑推荐:稀土掘金,这是一个针对技术开发者的一 ...

  9. 英语发音规则---F字母

    英语发音规则---F字母 一.总结 一句话总结: 1.F/FF发[f]音? fly [flaɪ] vi. 飞 fine [faɪn] adj. 好的 float [fləʊt] vt. 使漂浮 fra ...

  10. C#读出文本文件内容,遍历数组筛选出 含有汉字对应的拼音字符

    情景描述:由于任务需要,现有一用户表数据,用户名 字段 在新增用户时,输入中文和拼音两种,先要区分同时含有中文和拼音字母的用户名.由于数据很多,可以通过一段代码完成查询: 前提:在阅读本文之前可以先了 ...