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开发环境配置的更多相关文章

  1. 二维码Zxing&Zbar

    二维码Zxing&Zbar 前言:该项目主要介绍了二维码扫描.闪光灯开启.本地二维码图片识别.二维码生成.分别是zxing和zbar(网格二维码)分别实现,具体效果运行项目apk... 开发环 ...

  2. 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置

    目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...

  3. Android快速实现二维码扫描--Zbar

    Android中二维码扫描的最常用库是zxing和zbar,上一篇<Android快速实现二维码扫描–Zxing>介绍了Zxing.这次说Zbar,Zbar速度极快,我就比较常用,项目地址 ...

  4. OpenCV2.4.13+VS2012开发环境配置

    1.下载和安装OpenCV SDK 在OpenCV官网的下载页面: http://opencv.org/downloads.html   找到对应OpenCV for Windows版本下载.目前(2 ...

  5. react-native 扫一扫功能(二维码扫描)功能开发

    1.安装插件 yarn add react-native-smart-barcode 2.关联 react-native link react-native-smart-barcode 3.修改 an ...

  6. 配置zbar识别二维码(转载)

    原文地址:http://blog.csdn.net/dcrmg/article/details/52108258  二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二维码 ...

  7. 网站开发进阶(十四)JS实现二维码生成

    JS实现二维码生成 绪 项目开发原语:已然花费半天的时间,仍旧未能将二维码显示在订单中.但是可以在单个页面中显示二维码,结合到angularjs的控制器中就失效了,自己是真的找不到其中的原因了.费解! ...

  8. Opencv+Zbar二维码识别(标准条形码/二维码识别)

    使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...

  9. iOS学习——iOS原生实现二维码扫描

    最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时后台会自动上传用户的当前地 ...

随机推荐

  1. Scrapy学习-3-Request回调巧用

    基于twisted的异步回调 使得页面爬取有阶段性和连续性 from scrapy.http import Request from urllib import parse def parse(sel ...

  2. PHP提示Cannot modify header information - headers already sent by解决方法

    PHP提示Cannot modify header information - headers already sent by解决方法 因为 header();发送头之前不能有任何输出,空格也不行, ...

  3. Android 之 下拉框(Spinner)的使用-转

    下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数 ...

  4. 非旋转Treap:用运行时间换调试时间的有效手段

    非旋转Treap:用运行时间换调试时间的有效手段   Hello大家好,我们今天来聊一聊非旋转Treap. 相信各位或多或少都做过些序列上的问题.如果水题我们考虑暴力:不强制在线我们可能用过莫队和待修 ...

  5. python type()函数

    我怎么把一个变量的类型写入文件?a = 3type(a)貌似返回的是type类型,不能打印,也不能用文件的write怎么半,或者怎么转换成srt之类的? type()函数得到的是一个类型而不是字符串, ...

  6. 2019年春招Android方向腾讯电话面试

    第一问:TCP与UDP的区别 参考答案: 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少: 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确 ...

  7. API调用开发demo

    package fastjson; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStrea ...

  8. scapy在wlan中的应用

    Scapy 又是scapy,这是python的一个网络编程方面的库,它在wlan中也有很强大的应用.一般我们买块网卡,然后aircrack-ng套件爆破一下邻居的密码,其实我们可以用scapy写一些有 ...

  9. 最新的hustoj搭建姿势

    试着照某度上的教程搭了一下hustoj,出了一些问题,之前的搭建姿势很多已经不适用了,重新整理一下思路,方法二简单粗暴: 方法一: 首先虚拟机安装了Elementory OS (基于Ubuntu的衍生 ...

  10. 转:某运维DBA的mysql学习心得

    转自:http://www.cnblogs.com/lyhabc/p/3691555.html 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心 ...