C++利用Zbar识别二维码

Zbar库安装+使用


Win10+VS2015

下载安装Zbar

第一步:下载zbar,下载地址: http://zbar.sourceforge.net/download.html
C++利用Zbar识别二维码_第1张图片
下载的文件名为zbar-0.10-setup.exe!官网的下载总是向蜗牛一样缓慢(革命尚未成功,同志仍需努力)。这里提供一个下载地址:http://u.163.com/nnnnnnZRw 提取码: Mjm4xI7s

第二步:双击zbar-0.10-setup.exe安装

注意勾选Development Headers and Libraries和更改安装路径
C++利用Zbar识别二维码_第2张图片
C++利用Zbar识别二维码_第3张图片
C++利用Zbar识别二维码_第4张图片
C++利用Zbar识别二维码_第5张图片

安装完成,点击Finish。在对应的安装目录下出现下列文件夹,即表示安装成功
C++利用Zbar识别二维码_第6张图片
安装成功后,在开始菜单也提供了两个小程序使用
C++利用Zbar识别二维码_第7张图片

Command Reference是一个命令行说明文档;ZBar Command Prompt是命令行程序,打开后是一个命令行,根据命令行的提示进行条码和二维码的检测;zbarcam打开后会开启一个窗口,并唤醒相机,利用笔记本自带的摄像头直接扫码!

第三步:按Windows32方式配置zbar的C++开发环境(与Opencv环境配置类似)

1.使用VS2015新建一个项目:win32控制台应用程序,命名为BaseOnZbar

2.在工程的视图目录其它窗口下打开属性管理器,在属性管理器的Debug|Win32目录上点击添加新项目属性表,命名为BaseOnZbarX86(名称可自定义)

3.双击刚才新建的BaseOnZbarX86属性表,开始IDE环境配置

  • 通用属性->VC++目录->包含目录:添加目录Zbar\include
  • 通用属性->VC++目录->库目录:添加目录Zbar\lib
  • 通用属性->链接器->输入->附加依赖项:添加库文件libzbar-0.lib

4.配置系统环境

右键此电脑->属性->高级系统设置->环境变量->系统变量->编辑->新建

添加路径:D:\InstallPath\ZBar\bin

到这里,32位的安装就完成了;如果Windows是64位的,还需要后面的步骤

第四步:下载64位压缩包。下载地址:https://github.com/dani4/ZBarWin64

下载下来是一个名为ZBarWin64-master.zip的压缩包。如果github上下载太慢的话,这里也提供了另一个下载地址:http://u.163.com/nnnnnnECd 提取码: vZXAZojP

解压缩后的文件夹如下:

C++利用Zbar识别二维码_第8张图片

第五步:配置x64环境

将 ZBarWin64-master\lib 文件夹下 libzbar64-0.lib 文件复制到ZBar安装路径下的 lib 文件夹;

将 ZBarWin64-master\lib 文件夹下 libzbar64-0.dll 文件复制到ZBar安装路径下的 bin 文件夹;

将ZBarWin64-master\zbar\libiconv\dll_x64文件夹下 libiconv.dll 复制到ZBar安装路径下的bin 文件夹;

在VS项目属性表中,打开 通用属性->链接器->输入->附加依赖项 再添加一条:libzbar64-0.lib;

配置完成!

第六步:使用zbar(添加opencv的环境,属性表)

在主函数中添加如下代码

// BaseOnZbar.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include "zbar.h"
#include 

int main(int argc, char*argv[])
{
  zbar::ImageScanner scanner;
  scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
  cv::Mat image = cv::imread(argv[1]);
  cv::Mat imageGray;
  cv::cvtColor(image, image, cv::COLOR_BGR2GRAY);
  int width = image.cols;
  int height = image.rows;
  uchar *raw = (uchar *)image.data;
  zbar::Image imageZbar(width, height, "Y800", raw, width*height);
  scanner.scan(imageZbar); //扫描条码  
  zbar::Image::SymbolIterator symbol = imageZbar.symbol_begin();
  if (imageZbar.symbol_begin() == imageZbar.symbol_end())
  {
    std::cout << "查询条码失败,请检查图片!" << std::endl;
  }
  for (; symbol != imageZbar.symbol_end(); ++symbol)
  {
    std::cout << "类型:" << symbol->get_type_name() << std::endl;
    std::cout << "条码:" << symbol->get_data() << std::endl;
  }
  cv:imshow("Source Image", image);
  cv::waitKey();
  return 0;
}

生成解决方案,编译成功后会在工程的x64\Debug目录下生成BaseOnZbar.exe可执行文件,在终端上执行如下命令:

$ BaseOnZbar.exe test.png

C++利用Zbar识别二维码_第9张图片

你可能感兴趣的:(C++学习笔记,c++)