配置zbar识别二维码(转载)
下边这个简单粗暴的图标就是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_WARNING
我也配置成功了!
//学习OpenCV3 中级
//L5 课程代码 反向投影综合例子
#include "stdafx.h"
#include <opencv2/core/utility.hpp>
#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "zbar.h"
#include <iostream>
#include <ctype.h>
using namespace cv;
using namespace std;
using namespace zbar;
void main()
{
ImageScanner scanner;
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
Mat src = imread("E:/sandbox/1.png",IMREAD_COLOR);
Mat imageGray;
cvtColor(src,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",src);
waitKey();
imageZbar.set_data(NULL,0);
}
附件列表
目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
配置zbar识别二维码(转载)相关推荐
- 使用zbar识别二维码
目录 1 说明 2 软件获取 3 在Windows下使用zbar 4 在Linux PC(Ubuntu Server 1604 64位)下使用zbar 4.1 无内存泄漏的示例代码 5 在ARM Li ...
- 使用quirc识别二维码
目录 1 说明 2 移植quirc 3 保存JPG图片 1 说明 quirc是一款专用于识别二维码(不能识别一维码)的开源软件.它比zbar轻量一些,跟zbar一样能扫描码流和静态图片识别条形码,关于 ...
- 【转载】裸眼识别二维码
一个开关的开合状态可以对应"0.1"两个信号,莱布尼茨三百多年前留下的这个制式影响深远.日常语言依赖于思维逻辑,与之类似,数字语言的流通则依赖于数学逻辑,但本质上仍然只是无数个与非 ...
- Zing实现本地相册识别二维码
前言 最近公司的项目需要加入本地相册识别二维码的功能,就类似与微信那样.大家都知道二维码识别目前火的一个是Zing,一个就是Zbar,针对于这两个的区别,在此也不再赘述.(PS:网上的资料有很多)由于 ...
- C#_WPF中创建二维码、识别二维码
C#_WPF中创建二维码.识别二维码 原文: C#_WPF中创建二维码.识别二维码 第三方库: WPFMediaKit.dll (WPFMediaKit摄像头处理) zing.dll NuGet安装这 ...
- C++利用OpenCV识别二维码QRCode
引子 项目需要用到C++进行二维码识别,虽然手机上随便扫码就可以轻易识别出来,但是到了电脑上可就没有那么方便了. 我要做的是能够一下子把一张图片上的几十个二维码一下子识别出来,如果成功的话,那岂不是比 ...
- 树莓派4b + python3 + pyzbar + opencv + 摄像头 扫描识别二维码(寻找最大的二维码)
前言 最近需要做一个扫码乘车的功能,于是使用树莓派的摄像头扫描二维码来做一个demo . 网上有部分人用的是zbar这个库,但是我安装后,发现并不能在Python3上使用,这就有点不太好了.经过我的多 ...
- 移动端(ios and android)长按识别二维码(含js与原生互调)
这篇文章就整理下移动端长按识别二维码的实现吧!实现方式可以分为三种 一.长按原生控件,直接获取控件中的图片数据(src或background) 二.长按原生控件,截图识别 三.长按web中的图片,ap ...
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
写在前面:因项目需求,需要实现二维码扫码功能,笔者测试过多种开源扫码工具,但因不跨平台.扫描速度慢等问题逐个放弃,最后选用ZBar实现功能,笔者发现ZBar扫码在跨主流手机平台.扫码速度等方面有较明显 ...
最新文章
- Maya游戏角色绑定入门学习教程 Game Character Rigging for Beginners in Maya
- visual studio 64位汇编 listing列表文件
- DevExpress 里实现单选按钮
- XCTF-MISC-新手区-gif
- 如何免费下载和安装Windows 11
- python21天打卡Day6-元组
- Ubuntu 14.04 设置静态IP地址全攻略
- 数学基础知识总结 —— 6. 基本矩阵运算公式
- python自动化办公(五)实现将读取的excel数据写到word指定的地方:示例(劳动合同)
- 在某网课学习前端笔记整理js篇31-ajax
- LVDS接口分类,时序,输出格式
- 怎样才能画好古代汉服?画好古代汉服有哪些技巧?
- R语言绘图—“金字塔图”
- UE4 用C++构建自定义材质 完成视频抠像
- 深度学习与计算机视觉教程(11) | 循环神经网络及视觉应用(CV通关指南·完结)
- jquery 表格分页等操作实现代码(pagedown,pageup)
- ZZULIOJ1198: 考试排名(二)(结构体专题)
- 多少牛逼的程序员毁在low逼的英文发音上(JAVA)
- 软连接文件的创建删除
- min-height和min-width的使用场景
热门文章
- 借iPhone12热销势头,苹果将推更便宜的手机压制安卓手机
- 网易经典IP大作《梦幻西游网页版》开发经验分享
- 计算机网络-协议与层级划分
- python datatime简单计算工龄
- 华为p40桌面有计算机按过数字印记怎么删,华为p40手机屏幕上有个圆圈怎么去掉...
- python字符串拼接换行符_【编测编学】零基础学python_03_字符串(拼接+换行+制表符)...
- Finite Element Method with Adaptive Refinement
- Eclipse开发界面背景一键设置
- 如何在苹果官网下载旧版本的Xcode
- typora设置首行缩进