二维码解码器Zbar+VS2012开发环境配置
Zbar条码解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件、手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, QR Code(二维码)等常用编码方式的条形码/二维码。
下边这个简单粗暴的图标就是Zbar:
Zbar的SDK支持包括C、C++、python在内的多种语言,也提供了IOS和Androdi的SDK可供使用,用起来也非常方便,只需要在编译环境里添加相应的路径就行了,再加上图像处理包,如ImageMagick++或Opencv的辅助读图,就可以编写准确高效的二维码识别程序了,下边就一步一步的介绍如何在vs2012中配置Zbar。
1. Zbar安装包下载
点击下载:Zbar官网下载链接,提供了Linux、Windows等版本的下载,目前最新版本是zbar-0.10。
2. Zbar安装
双击zbar-0.10-setup.exe,开始安装Zbar,其实就是对安装包的解压缩,如下图:
勾选“Development Headers and Libraries”:
选择安装路径:
安装完成之后在对应目录下出现下列文件夹,代表安装成功了:
3. VS2012工程项目属性配置
3.1 添加属性表
新建Win32控制台应用程序,工程名命名为ZbarTest,过程图就省略~
在工程ZbarTest工程的视图目录的下拉菜单中打开属性管理器:
在属性管理器的Debug|Win32目录上单击选择“添加新项目属性表”,新建属性表,并命名为“Zbar_Debug_Setting.props“,如下图所示:
点击添加,完成对项目属性表的添加。
3.2 VC++目录配置
双击刚才添加的“Zbar_Debug_Setting.props“属性表,选择通用属性->VC++目录:
在VC++目录->包含目录里添加1个目录: D:\ProgramFilesD\ZBar\include
选择VC++目录->库目录:
在库目录里添加1个目录: D:\ProgramFilesD\ZBar\lib
3.3 输入目录配置
打开通用属性->链接器->输入:
在附加依赖项里添加1个依赖项: libzbar-0.lib
点击确定,完成对IDE环境的配置。
4. 环境变量配置:
打开环境变量列表,这里跟在另一篇文章里Opencv+VS2010里的配置环境变量是一样的 ,如不知道环境变量如何配置,可以点击这里查看详细步骤。
添加Zbar的动态库所在目录:D:\ProgramFilesD\ZBar\bin; 添加之后系统就不会找不到需要的dll文件了。
添加完之后务必记得注销电脑后生效。
OK!完成这4个步骤的动作,整个Zbar和VS2012的配置工作就全部完成了。
5. 环境测试
最后通过一个例程,来测试一下配置是否OK,这个例子的实现是查找到输入图片中的二维码,并在控制台窗口和图片窗口中分别输出二维码的内容。
#include "zbar.h"
#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace std;
using namespace zbar; //添加zbar名称空间
using namespace cv;
int main(int argc,char*argv[])
{
ImageScanner scanner;
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
Mat image = imread("code.jpg");
if(!image.data)
{
cout<<"请确认图片"<<endl;
system("pause");
return 0;
}
Mat imageGray;
cvtColor(image,imageGray,CV_RGB2GRAY);
int width = imageGray.cols;
int height = imageGray.rows;
uchar *raw = (uchar *)imageGray.data;
Image imageZbar(width, height, "Y800", raw, width * height);
scanner.scan(imageZbar); //扫描条码
Image::SymbolIterator symbol = imageZbar.symbol_begin();
if(imageZbar.symbol_begin()==imageZbar.symbol_end())
{
cout<<"查询条码失败,请检查图片!"<<endl;
}
for(;symbol != imageZbar.symbol_end();++symbol)
{
cout<<"类型:"<<endl<<symbol->get_type_name()<<endl<<endl;
cout<<"条码:"<<endl<<symbol->get_data()<<endl<<endl;
}
imshow("Source Image",image);
waitKey();
imageZbar.set_data(NULL,0);
return 0;
}
注意把二维码图片放入程序所在路径下,运行效果如下:
换用二维码图片:
如果编译过程中提示错误 “error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.”
可以尝试以下解决方案:
项目 =》属性 =》c/c++ =》预处理器=》点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS
二维码解码器Zbar+VS2012开发环境配置的更多相关文章
- 二维码Zxing&Zbar
二维码Zxing&Zbar 前言:该项目主要介绍了二维码扫描.闪光灯开启.本地二维码图片识别.二维码生成.分别是zxing和zbar(网格二维码)分别实现,具体效果运行项目apk... 开发环 ...
- 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...
- Android快速实现二维码扫描--Zbar
Android中二维码扫描的最常用库是zxing和zbar,上一篇<Android快速实现二维码扫描–Zxing>介绍了Zxing.这次说Zbar,Zbar速度极快,我就比较常用,项目地址 ...
- OpenCV2.4.13+VS2012开发环境配置
1.下载和安装OpenCV SDK 在OpenCV官网的下载页面: http://opencv.org/downloads.html 找到对应OpenCV for Windows版本下载.目前(2 ...
- react-native 扫一扫功能(二维码扫描)功能开发
1.安装插件 yarn add react-native-smart-barcode 2.关联 react-native link react-native-smart-barcode 3.修改 an ...
- 配置zbar识别二维码(转载)
原文地址:http://blog.csdn.net/dcrmg/article/details/52108258 二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二维码 ...
- 网站开发进阶(十四)JS实现二维码生成
JS实现二维码生成 绪 项目开发原语:已然花费半天的时间,仍旧未能将二维码显示在订单中.但是可以在单个页面中显示二维码,结合到angularjs的控制器中就失效了,自己是真的找不到其中的原因了.费解! ...
- Opencv+Zbar二维码识别(标准条形码/二维码识别)
使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...
- iOS学习——iOS原生实现二维码扫描
最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时后台会自动上传用户的当前地 ...
随机推荐
- Post Content_Length exceeds the limit
2017.12,公司市场专员反馈我在公司开发与维护的iOS包内审系统在上传ipa包文件的时候报错了.经过调试发现原来是因为上传的文件太大导致报错(由下图可知,接收方允许的最大请求内容为128M,但我们 ...
- vba比较日期大小,定义日期;vba让excel保存
Private Sub CommandButton1_Click()Dim i, j As IntegerDim a As Datea = #10/1/2013#j = 2i = 2' If Wor ...
- VM虚拟机
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...
- [bzoj5457]城市_dsu on tree
bzoj 5457 城市 题目大意 给定一棵以\(1\)为根的\(n\)个节点的有根树. 每个节点有一个民族和该民族在当前节点的人数. 有\(n\)个询问,第\(i\)个询问是求以\(i\)为根的子树 ...
- eclipse软件安装及python工程建立
原文地址:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 安装python解释器 安装PyDev: 首先需要去Eclip ...
- 洛谷P1061 Jam的计数法
题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...
- js dom 的常用属性和方法
1.对象集合: (1).all[]; (2).images[]; (3).anchors[]; (4).forms[]; (5).links[]; ...
- 如何稳定地使用 Google 搜索https://encrypted.google.com/
方法很简单.用记事本打开 hosts 文件(Windows Vista 和 Windows 7 用户请先使用管理员权限打开记事本,然后将 hosts 文件拖进记事本中),在最下面添加如下内容: 203 ...
- Go -- type 和断言 interface{}转换
摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...
- mac mysql重置密码
http://blog.csdn.net/xiaozhuanddapang/article/details/53185775 情况一:在mysql官网直接下载dmg文件进行安装,忘记密码 1.关闭my ...