简述

二维码(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. C#--职业路线图

    非常好的一个C#的职业技术路线图

  2. 【Web API系列教程】3.4 — 实战:处理数据(处理实体关系)

    前言 本部分描写叙述了EF怎样载入相关实体的细节,而且怎样在你的模型类中处理环形导航属性.(本部分预备了背景知识,而这不是完毕这个教程所必须的.你也能够跳到第五节) 预载入和延迟载入 预载入和延迟载入 ...

  3. Android-自己定义标题栏

    Android-自己定义标题栏 2014年4月25日 分享知识点 最近也比較多事情,想发发博客就是心有余而力不足,本篇博文主要教大家怎样实现自己定义标题栏,非常easy.那么聪明的你一下就看懂. 有兴 ...

  4. IOS开发教程--怎样使用点9图片

    事先准备一张图片: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA== ...

  5. Linux--对文件夹下的配置文件批量改动IP

    sed -i 's/10.1.1.1/10.1.1.2/g' `grep -ir 10.1.1.1 * |grep -E '.xml:|.cfg:|.ini:|.wsdl:|.properties:' ...

  6. POJ-3984-迷宫问题-BFS(广搜)-手写队列

    题目链接:id=3984">http://poj.org/problem? id=3984 这个本来是个模板题,可是老师要去不能用STL里的queue,得自己手写解决.ORZ....看 ...

  7. 编写函数int count_number_string(char str[])和函数int maxnum_string(char str[])

    题目如图: 这里不再赘述 代码: //字符串中统计与查询 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <st ...

  8. hdu5592/BestCoder Round #65 树状数组寻找第K大

    ZYB's Premutation    Memory Limit: 131072/131072 K (Java/Others) 问题描述 ZYBZYB有一个排列PP,但他只记得PP中每个前缀区间的逆 ...

  9. Java-MyBatis-杂项: MyBatis 中 in 的用法2

    ylbtech-Java-MyBatis-杂项: MyBatis 中 in 的用法2 1.返回顶部 1. 一.简介 在SQL语法中如果我们想使用in的话直接可以像如下一样使用: select * fr ...

  10. jQuery进度条设置

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="con ...