文档章节

Win10操作系统下配置OpenCv以及Zbar-VS2012

yylea
 yylea
发布于 2016/12/24 09:37
字数 1639
阅读 700
收藏 0


1.前期准备

系统环境:Win10

ZBar版本:zbar-0.10 

http://download.csdn.net/detail/chenjifeng1987/9598568

OPenCV版本:opencv-2.4.13

OpenCV官网的下载页面: http://opencv.org/downloads.html   

找到对应OpenCV for Windows版本下载。

Version 3.1.0只有64位的开发包,还没支持32位的编译环境,这里使用Version 2.4.13。

VS2012:官方旗舰版

http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-478C-849A-02C8395D0995/VS2012_ULT_chs.iso 

激活序列号,请输入:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

2.程序安装

2.1.VS2012安装

打开安装程序一路走就OK,注意的是安装时间比较长,大概要两三个小时。就算安装路径改成了其他盘符,C盘还是会占用大约6个G的容量。

2.2.ZBar安装

双击zbar-0.10-setup.exe,开始安装Zbar,其实就是对安装包的解压缩,如下图:

 

勾选“Development Headers and Libraries”:

 

选择安装路径:请记住自己的安装路径,之后的配置需要进入安装路径。我这里的路径是“G:\Program Files (x86)\ZBar\”

 

 

安装完成之后在对应目录下出现下列文件夹,代表安装成功了:

 

2.3.安装OpenCV

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

 

选择安装路径,这里使用的是“G:\Program Files (x86)”,点击“Extract”后开始解压;

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

3.本机环境变量和路径配置

3.1.打开系统环境变量

我使用的是WIN10的系统,可以直接在任务栏输入环境变量,找到编辑系统环境变量按钮。

 

打开后,点击环境变量

 

3.2.配置用户变量及其PATH

在【用户变量】里新建变量OpenCV,变量值:为OpenCv安装路径的build目录。

 

在【用户变量】里编辑变量path,变量值:..opencv\build\x86\vc11\bin;

【注意!】一定要在编辑界面新建,否则会覆盖电脑上原来配置好的用户变量。覆盖原来的用户变量会导致电脑的任务栏按钮失灵、开始菜单快捷方式点选时无反应等问题,更严重的情况会导致无法开机等问题。(我就遇到了这个坑T_T ... )

  

同理配置ZBar的用户变量和path:

在这里可能有人会有疑问:编译器是VS2012,变量值不应该是XX\vc12\bin吗?注意,在OpenCV配置中,vc11即对应VS2012,vc12对应的是VS2013。

另一点要关注的是上述变量值到底应该是x86还是x64?这里x86还是x64的选择跟你的电脑是32位还是64位无关,vs2012编译环境默认的使用win32编译器,所以选择x86。

3.3.配置系统变量

在【系统变量】里编辑(或添加)Path变量,变量值为安装路径下的\opencv\build\x86\vc11\bin,和ZBar安装路径下的bin目录..\ZBar\bin。

  

注意要使用英文输入下的分号和前面已有的路径分开,千万不能覆盖原来的变量!添加完之后需要重启或注销计算机,环境变量才会生效。道理同用户变量path。

3.VS2012工程项目属性配置

3.1添加属性表

新建Win32控制台应用程序,工程名命名为ZbarTest,过程图就省略~

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

 

在属性管理器的Debug|Win32目录上单击选择“添加新项目属性表”,新建属性表,并命名为“Zbar_Debug_Setting.props“,如下图所示:

 

点击添加,完成对项目属性表的添加。

同理,添加OpenCV_DebutSetting,如下图。

 

3.2.Zbar属性表配置

1) VC++目录配置

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

在VC++目录->包含目录里添加1个目录: 安装路径ZBar\include

 

选择VC++目录->库目录,在库目录里添加1个目录: 安装路径\ZBar\lib

 

2)输入目录配置

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

 

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

 

3.3.OpenCV属性表配置

同理,双击刚才添加的“Zbar_Debug_Setting.props“属性表 配置OpenCV 属性表。

1)选择通用属性->VC++目录,在包含目录里添加3个目录:

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

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

D:\ProgramFilesD\opencv\build\include

 

2)同样在VC++目录下,在库目录里添加1个目录:

...\opencv\build\x86\vc11\lib

 

3)选择通用属性->链接器->输入->附加依赖项,在附加依赖项里添加库文件:

opencv_ml2413d.lib

opencv_calib3d2413d.lib

opencv_contrib2413d.lib

opencv_core2413d.lib

opencv_features2d2413d.lib

opencv_flann2413d.lib

opencv_gpu2413d.lib

opencv_highgui2413d.lib

opencv_imgproc2413d.lib

opencv_legacy2413d.lib

opencv_objdetect2413d.lib

opencv_ts2413d.lib

opencv_video2413d.lib

opencv_nonfree2413d.lib

opencv_ocl2413d.lib

opencv_photo2413d.lib

opencv_stitching2413d.lib

opencv_superres2413d.lib

opencv_videostab2413d.lib

 

 

至此,VS2012环境下配置OpenCV2.4.13和ZBar的工作已经全部完成了,对于之后创建的OpenCV工程,只需要添加本工程的属性配置即可,不再需要一步一步重复配置。

【方法】:首先保存本工程的属性配置文件OpenCV_Debug_Setting.props到备用文件夹,该属性配置文件在本项目中的路径是:

...Visual Studio 2012\Projects\ZbarOpenCvTest\ZbarOpenCvTest

 

之后在新创建的工程中,在属性管理器中添加OpenCV_Debug_Setting.props属性表即可。

同理:之后在新创建的工程中,在属性管理器中添加ZBar_Debug_Setting.props属性表即可。

4.测试代码

4.1 OpenCV测试代码

#include <iostream>  
#include<core/core.hpp>  
#include<highgui/highgui.hpp>  
  
  
using namespace cv;  
using namespace std;  
int main()  
{  //读入图片,注意图片路径  
Mat image=imread("F:\\Picture\\lena.png");  
  
  
//图片读入成功与否判定  
if(!image.data)  
{  
cout<<"you idiot!where did you hide lena!"<<endl;  
  
  
//等待按键  
system("pause");  
return -1;  
}  
  
  
//创建一个名字为“Lena”的图像显示窗口,(不提前声明也可以)  
namedWindow("Lena",1);  
  
  
//显示图像  
imshow("Lena",image);  
  
  
//等待按键  
waitKey();  
return 0;  
}  

 

测试结果:会显示代码指定目录下的lena图片

 

4.2.Zbar测试代码

 

#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;    
}      

测试结果:

 

注意,图片应存放在生成的.exe目录下。

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
yylea
粉丝 1
博文 1
码字总数 1639
作品 0
成都
私信 提问
python使用Zbar实现二维码/条形码检测识别流程

1、Zbar库安装: windows 10 上安装zbar(python) OpenCV+ZBar实现条码识别(Windows32位和64位) Win10x64+Zbar0.10+VS2015+Opencv3.0.0 https://sourceforge.net/projects/zbar/files/lates......

小八路2222
05/31
0
0
二维码识别之Android完整编译Zbar

大概刚做Android开发的时候就做过二维码扫描,那时候懂的东西少,就搜出来了ZXing和Zbar两个库。ZXing是纯Java代码实现的,适用于Android平台;Zbar是C实现的,可以供很多语言和平台使用,比...

android自学
08/07
0
0
android 二维码扫描算法优化问题

哪位大虾做过android二维码的优化问题么?最近在搞一个二维码扫描功能,zxing、zbar都试了下,感觉zbar更快吧,但是zbar是c写的,封装成so库看不到算法啊,找到文档都是ios的。。然后zxing反...

hzy00
2014/07/28
6.7K
1
在 iOS 中使用 ZBar 扫描二维码

最近在做的项目中需要用到二维码扫描功能,之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可...

鉴客
2014/03/24
3.9K
2
关于Zbar和ZXing这两个无比强大的二维码和条形码识别工具

之前做了一些关于一维码二维码识别与生成的工作。在这里总结一下子。 显然做这个我们不会花大量力气去自己来写这个识别过程, 这之间可能会包括人工识别方面的工作, 所以为了偷懒,便想到了...

长平狐
2013/12/25
2.2K
1

没有更多内容

加载失败,请刷新页面

加载更多

MYSQL事务处理

INNODB 事务里,所有表引擎必须为INNODB,在非实务表上操作,不会警告,不会报错,但没有效果

关元
27分钟前
3
0
cmake 编译脚本

#!/bin/sh test -d build || mkdir -p build cd build cmake .. make

shzwork
44分钟前
2
0
从零开始实现Vue简单的Toast插件

概述: 在前端项目中,有时会需要通知、提示一些信息给用户,尤其是在后台系统中,操作的正确与否,都需要给与用户一些信息。 1. 实例 在Vue组件的methods内,调用如下代码 `this``.$toast({...

前端小攻略
49分钟前
1
0
yaf和yaconf

pecl install yafpecl install yaconf [yaf] yaf.environ = dev yaf.use_spl_autoload = On yaf.use_namespace = 1 [yaconf] yaconf.directory = /data/wwwroot/yaconf......

果树啊
49分钟前
0
0
day01:shell基础(shell基础、alias及重定向)

1、shell基础介绍: shell是一个命令解释器,用于用户与机器的交互: 也支持特定的语法(逻辑判断,循环): 每个用户都有自己特定的shell:Centos7的shell是bash(bourne agin shell): shel...

芬野de博客
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部