文档章节

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

yylea
 yylea
发布于 2016/12/24 09:37
字数 1639
阅读 651
收藏 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......

yongwan5637
05/31
0
0
二维码识别之Android完整编译Zbar

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

android自学
08/07
0
0
发票二维码扫描增强_01_问题分析

问题概述 目前开发的App中涉及到以下场景:基于纸质发票的二维码扫描结果,调用国税总局的查询接口,获取发票的票面信息并自动构建对应的报销单 发票二维码中包含以下信息: 国税总局接口中需...

稀饭老鼠
07/02
0
0
Visual Studio 安装OpenCV及问题总结

1、VS安装OpenCV基本步骤   1)安装Visual Studio     下载网址https://opencv.org/releases.html#   2)安装OpenCV      下载网址https://www.visualstudio.com/zh-hans/,直接下...

youaremyall
02/02
0
0
安卓zBar在部分8.0的机型上不能近距离的扫码

安卓zBar在部分8.0的机型上不能近距离的扫码请问是什么问题

蜗牛爱爬高
09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法set:function(key, val, time){// 获取当前时间var date = new Date();// 将date设置为n天以后的时间var expiresDays = time;//...

小丶二
36分钟前
1
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
38分钟前
2
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
40分钟前
2
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
48分钟前
1
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部