一.在window下的编译运行

1.首先要下载Microsoft Visual Studio 2010或者更高版本:对与该软件的相关配置参考《OPENCV 3》这本书;

2.下载和安装opencv3.0.0以及Zbar-0.10安装包


(1)下载




  Zbar 下载http://zbar.sourceforge.net/download.html(Zbar-0.10官网下载链接),提供了Linux、Windows等版本的下载,目前最新版本是zbar-0.10。


  opencv下载页面http://opencv.org/downloads.html找到对应的Opencv for Windows版本下载。这里使用Version3.0.0。进入下图界面后鼠标下拉找一下3.0.0版本,点击Opencv for Windows,选择下载路径,我选的还是Zbar-0.10的下载路径。




(2)Zbar-0.10安装:

找到刚才的下载路径后双击 ,开始安装Zbar-0.10,如下图:

         

opencv简单背景二维码定位 opencv 二维码_zbar

 

   点击next,进入下图后勾选“DevelopmentHeadersand Libraries”:

         

opencv简单背景二维码定位 opencv 二维码_zbar_02

 点击next后进入下图选择安装路径:

         

opencv简单背景二维码定位 opencv 二维码_zbar_03

      点击install,等待安装完成之后在对应目录下出现下列文件夹,代表安装成功了.


 

opencv简单背景二维码定位 opencv 二维码_Visual_04


(3)安装opencv3.0.0:(详解参考《OPENCV 3》这本书中)




下载完成之后双击“opencv-2.4.13.exe”,弹出安装(解压)对话框:

选择安装路径时使用的还是“D:\ProgramFilesD”,点击“Extract”后开始解压;

值得注意的一点是不需要在安装目录里额外建“opencv”的文件夹,OpenCV安装包解压出来的根目录就是“opencv”。


解压完之后会看到在刚刚的路径里多出了一个名为opencv的文件夹,代表安装成功::



(4)本机环境变量和路径配置:


点击开始菜单,右击计算机->属性->高级系统设置->高级->环境变量,


打开环境变量设置对话框,在系统变量里找到“Path”,点击“编辑”,如下图



opencv简单背景二维码定位 opencv 二维码_opencv_05


加入自己的OpenCV目录和Zbar目录,我的是“D:\ProgramFileD\opencv\buile\x86\vc12\bin”

“D:\ProgramFileD\ZBar\bin”


系统变量配置完毕,点击确定就好啦。

然后:重新启动电脑。

:变量值实际为bin文件夹的路径;D表示OpenCV安装于D盘;X64表示运行系统环境位64位系统,若安装于32位系统,应为X86;vc12表示编译环境为Microsoft Visual Studio 2013或者2015;变量添加完成后最好进行重启,这样才可以生效。


另:

vc8 = Visual Studio 2005,vc9 =Visual Studio 2008,vc10 = VisualStudio 2010,vc11 = Visual Studio 2012,vc12 = VisualStudio 2013和2015


(5)VS2010工程项目属性配置:

首先打开VS2010;


文件->新建->项目->Visual C++新建Win32控制台项目;如下图: 新建Win32控制台应用程序,工程名命名为ZbarTest,过程图就省略~




opencv简单背景二维码定位 opencv 二维码_zbar_06


在工程ZbarTest工程的视图目录的下拉菜单中打开属性管理器:

点击下一步,再点击下一步,勾选空项目,然后点击完成;

现在进行Zbar和Opencv目录的配置:

先在源文件下建立一个.cpp源文件 命名为ZbarTest.cpp;


然后点击视图,在视图下找到其他窗口,在其他窗口下找到属性管理器,点击打开,然后便会有一个属性管理器的窗口了,接下来点开工程文件test,在Debug|Win32目录上右键单击选择“添加新项目属性表”,新建属性表,并命名为“Zbar_Debug_Setting.props“,点击“添加”,完成对项目属性表的添加。如下图:



opencv简单背景二维码定位 opencv 二维码_opencv_07




opencv简单背景二维码定位 opencv 二维码_zbar_08


接下来完成Zbar的VC++目录配置:

双击刚才添加的“Zbar_Debug_Setting.props“属性表,选择通用属性->VC++目录

在VC++目录->包含目录里添加1个目录: D:\ProgramFilesD\ZBar\include

选择VC++目录->库目录:

在库目录里添加1个目录:D:\ProgramFilesD\ZBar\lib

打开通用属性->链接器->输入:

在附加依赖项里添加1个依赖项:libzbar-0.lib

点击确定,完成对IDE环境的配置


如图:


opencv简单背景二维码定位 opencv 二维码_Visual_09

opencv简单背景二维码定位 opencv 二维码_opencv_10

opencv简单背景二维码定位 opencv 二维码_zbar_11



选择VC++目录->库目录:



opencv简单背景二维码定位 opencv 二维码_Visual_12



在库目录里添加1个目录: D:\ProgramFilesD\ZBar\lib:



opencv简单背景二维码定位 opencv 二维码_Visual_13


接下来完成Opencv的VC++目录配置:

依然是找到属性管理器的窗口了,点击工程文件,

点击项目->属性->配置属性->VC++ 目录->包含目录,

添加D:\ ProgramFilesD\opencv\build\include

D:\ ProgramFilesD\opencv\build\include\opencv

D:\ ProgramFilesD\opencv\build\include\opencv2

如图:

 

opencv简单背景二维码定位 opencv 二维码_zbar_14

在库目录添加:

D:\ ProgramFilesD\opencv\build\x86\vc12\lib

D:\ ProgramFilesD\opencv\build\x86\vc12\staticlib

opencv简单背景二维码定位 opencv 二维码_opencv_15

在链接器--输入--附加依赖项添加:

opencv_ts300.lib


opencv_world300.lib


opencv简单背景二维码定位 opencv 二维码_Visual_16



在附加依赖项里添加1个依赖项: libzbar-0.lib



opencv简单背景二维码定位 opencv 二维码_zbar_17


完成后一定要选择“确定”

(6)环境变量配置:

     打开环境变量列表,这里跟在另一篇文章里Opencv+VS2010里的配置环境变量是一样的 ,如不知道环境变量如何配置,可以查看详细步骤。


如图:


opencv简单背景二维码定位 opencv 二维码_opencv_18



添加Zbar的动态库所在目录:D:\ProgramFilesD\ZBar\bin; 添加之后系统就不会找不到需要的dll文件了。如图:



opencv简单背景二维码定位 opencv 二维码_opencv_19


添加完之后务必记得注销电脑后生效。


完成上述步骤,环境基本就可以使用了。



(7)测试Win10+Zbar+Opencv+VS2010的组合是否成功:




#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("K1.jpg");   //不在mian函数同文件夹要写明路径 
    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;    
}

 

 

opencv简单背景二维码定位 opencv 二维码_opencv_20


到处为止,就可以进入opencv world了。并且可以识别一些二维码了。