您的位置:首页 > 运维架构

在win7(32bit和64bit) visual studio 2010(vs2010)下安装opencv2.3

2012-08-21 16:37 531 查看

作者:pianpianboy

出处:翩翩男孩blog

前言:

由于最近导师的项目,有用到opencv的库,在网上收集了一些资料(包括opencv中文网),网上的那些东西要么不全,要么写的粗枝大叶,或者甚至有错误,就一个版本的opencv竟然有五六种安装方法,太乱太杂,因此本人结合自己最近几天的安装和遇到的问题,在此与大家分享;本人电脑安装win7 64bit的系统,而网上都是32bit的安装方法,其实32bit和64bit的区别就在于运行cmake和用vs编译程序的时候有区别,区别如图:



上图是安装完cmake让后运行cmake的一张图,如果安装64bit就直接在下拉框里选择visual studio 10 win64




在安装完opencv的库之后,编译程序时候需要将图片上部分框中 Win32 更改为下图的X64




本人在安装opencv的库的时候还遇到了写错误,如安装opencv的库之后,运行验证程序 出现

1>LINK : fatal error LNK1104: cannot open file 'opencv_core230.lib'错误

后面经过一天的查找和思考,发现我下载的opencv是2.3.1版本的而我在opencv配置的时候增加的库是opencv2.3.0(不同版本的opencv生成的库是不一样的,比如opencv2.3.0生成的库opencv_*230d.dll文件(fordebug)和opencv_*230.dll文件(forrelease)将出现在D:\CX\opencv\bin目录中;OpenCV的opencv_*230d.lib文件(fordebug)和opencv_*230.lib文件(forrelease)将出现在D:\CX\opencv\lib

目录

正文:

安装大概需要四步:

第一步:下载安装Cmake
第二步:用cmake配置opencv2.3.0(也可安装opencv
2.31,只需更改安装后的连接库名),然后编译,安装
第三步: 在vs2010中配置opencv2.3.0(也可安装opencv
2.31,只需更改安装后的连接库名)
第四步:验证是否安装成功

1 安装所需要的软件

1.1 下载OpenCV
http://www.opencv.org.cn/index.php/Download下载OpenCV

1.2安装CMake
http://www.cmake.org/cmake/resources/software.html下载 Windows(Win32 Installer) 安装。

2 用CMake导出VC++项目文件

步骤1:在CMAKE的界面中输入源码路径(Whereis the source code)和目标路径(where to build the binaries)。


是刚下载的opencv源代码所在的文件夹(D:\CX\opencv)


是cmake配置好的文件放在那里。D:\
opencv






步骤2:点击【Configure】按钮,在弹出对话框中选择编译软件,如Visual sudio 10。



步骤3:点击下图中的【Generate】,开始编译

步骤4:Cmake编译结束界面,(再次点击【Configure】,红色消失)

点击 Generate,可以把cmake关掉了。

3 编译 OpenCV Debug和Release版本库

完成上一步骤后,将在C:\OpenCV230_Vs2010目录下生成OpenCV.sln的VC Solution File,用VC++ 2010打开OpenCV.sln,然后执行如下操作:

步骤1:在Debug下,选择SolutionExplorer里的 SolutionOpenCV,点右键,运行"RebuildSolution";





步骤2:如编译无错误,再选择INSTALL项目,运行"Build"。







步骤3:在Release下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。



此时,OpenCV的opencv_*d.dll文件(for debug)和opencv_*.dll文件(for release)将出现在C:\OpenCV230_Vs2010\bin目录中;OpenCV的opencv_*d.lib文件(for debug)和opencv_*.lib文件(for release)将出现在C:\OpenCV230_Vs2010\lib目录;头文件*.h出现在C:\OpenCV230_Vs2010\include\opencv中。

到此,可以被VC++ 2010调用的OpenCV动态库生成完毕。

4 设置Windows环境变量(重点)
用户工程运行时,需要调用OpenCV动态链接库,因而需要添加Windos动态链接库路径。

步骤1:



步骤2:



步骤3:

1)添加变量名为“path”,变量值为 “(D:\CX\opencv\bin\Release; D:\CX\opencv\bin\Debug;D:\opencv\build\x86\vc10\bin)”的用户环境变量。如果“path”已经存在,选择编辑,在原变量值后添加,以分号“;”隔离路径名。

2)通常需要重启后,才生效。



5 OpenCV的vs2010环境配置

步骤1 打开任意一个VC++项目。切换到VS2010左下角的标签,选择属性管理器(从菜单【视图】->属性管理器);

如图:


步骤2 双击任意“Debug |Win32”,在弹出的属性页中设置VC++ Directories(VC++目录)。该设置方法对所有VC++项目都有效。

需要修改包含Include Directories(include目录)、libraryDirectories (library库目录) 到用CMake导出VC++项目文件的相关目录。本例中即以下4个:
将:
D:\opencv\include

D:\CX\opencv\install\include

D:\CX\opencv\install\include\opencv

加到Include Directories。

将:

D:\CX\opencv\lib\Debug

D:\CX\opencv\install\lib

D:\opencv\build\x86\vc10\lib

加到library Directories

如图:





注意必须将opencv安装目录下得lib添加进去:..\opencv2.3\opencv\build\x86\vc10\lib
可执行文件目录executable files(C:\OpenCV230_Vs2010\bin)添加到Windows环境变量中,在此不需要添加。

步骤3 添加lib库文件:
1. 在双击左上角“Debug|Win32”后的弹出框Debug property Pages中更改Common Properties(项目属性)>>Linker(链接器)>>input(输入)>>Additional Dependencies(附加依赖库)里加上

opencv_core230d.lib (如果是opencv2.3.1则增加 opencv_core231d.lib)

opencv_highgui230d.lib (如果是opencv2.3.1则增加opencv_highgui231d.lib)

opencv_video230d.lib (如果是opencv2.3.1则增加 opencv_video231d.lib)

opencv_ml230d.lib (如果是opencv2.3.1则增加opencv_ml231d.lib )

opencv_legacy230d.lib (如果是opencv2.3.1则增加opencv_legacy231d.lib)

opencv_imgproc230d.lib (如果是opencv2.3.1则增加opencv_imgproc231d.lib)





2.在双击左上角“Release|Win32”后的弹出框Debug property Pages中更改Common Properties(项目属性)>>Linker(链接器)>>input(输入)>>Additional Dependencies(附加依赖库)里加上
opencv_core230.lib (如果是opencv2.3.1则增加opencv_core231.lib )

opencv_highgui230.lib (如果是opencv2.3.1则增加opencv_highgui231.lib )

opencv_video230.lib (如果是opencv2.3.1则增加opencv_video231.lib)

opencv_ml230.lib (如果是opencv2.3.1则增加opencv_ml231.lib)

opencv_legacy230.lib (如果是opencv2.3.1则增加opencv_legacy231.lib)

opencv_imgproc230.lib (如果是opencv2.3.1则增加opencv_imgproc231.lib)





6 验证OpenCV是否设置成功

经典代码1:(显示一张图片)
#include
"stdafx.h"
#include
"highgui.h"
//using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{ const
char* imagename = "D:/lady.jpg";
cv::Matimg = cv::imread(imagename);
if(img.empty())
{ fprintf(stderr, "Can not load image%s\n", imagename);
return-1;
}
if(!img.data )
// 检测数据有效
return-1;
cv::namedWindow("image", CV_WINDOW_AUTOSIZE);//创建窗口
cv::imshow("image",img);//显示图像
cv::waitKey();
return 0;
}
经典代码2:(调用摄像头)
#include "stdafx.h"
#include <highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{
int c;
// allocate memory for an image
IplImage *img;
// capture from video device #1
CvCapture* capture =cvCaptureFromCAM(1);
// create a window to displaythe images
cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
// position the window
cvMoveWindow("mainWin",5, 5);
while(1)
{
// retrieve the capturedframe
img=cvQueryFrame(capture);
// show the image in thewindow
cvShowImage("mainWin",img );
// wait 10 ms for a key tobe pressed
c=cvWaitKey(10);
// escape key terminatesprogram
if(c == 27)
break;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: