admin 发表于 2013-4-16 17:11:19

【admin超详细验证版】OpenCV2.4.5+Win7 32bit+VS2008配置说明贴

由于OpenCV版本的升级,WinOS升级到Win7,网上找的配置贴由于版本或者其他原因都有这样那样的小错误,这里将admin验证过的一个配置过程做一个说明,大概是将网上的内容做一个整合,然后实际通过实验验证。

By RuanYuan.Net@admin 2013.4.16

配置环境:
======
PC OS: Win7 32bit
VS: VS2008
OpenCV版本: 2.4.5

配置过程:
======
0.安装配置OpenCV所必要的软件在配置openCV之前,首先要保证机器中安装了以下软件:1,C/C++编译器。我使用的是Visual-Studio2008 Professional,当然使用VC++2008或者其他版本的VS也可以,不过配置细节上会略有不同。2,安装CMake最新版本。下载地址: http://www.cmake.org/cmake/resources/software.html 下载 Windows (Win32 Installer) 安装。3,安装OpenCV2.4.5. 下载地址: http://opencv.org/ 找到Windows版本,解压exe文件得到opencv的文件夹,要记住你自己的安装路径,我的安装路径是:D:\2_Software\20130415Win7VS2008OpenCV\opencv245
1.使用CMake编译openCV:安装了以上3个软件后,就需要使用CMake编译openCV了1,进入cmake的bin文件夹,运行cmake-gui,在where is the source code中填入你的openCV路径:D:\2_Software\20130415Win7VS2008OpenCV\opencv245;where to build the binaries中填入你要存放编译结果的路径:D:\2_Software\20130415Win7VS2008OpenCV\opencv245/vs2008。2, 点configure,在弹出的对话框中选择Visual Studio 9 2008 (此处根据你的VS版本而定)。3,如果有红色框显示,继续点击configure。(如果需要,可以将BUILD_EXAMPLES选项勾上,其余的使用默认配置即可,如果需要使用OpenNI、OpenGL、QT、TBB库的请自行配置库路径;)4,configure完成之后,点击generate。上述步骤完成之后,在vs2008文件夹中,就会看到有OpenCV.sln文件。---------------以下为示意图,非admin实际验证图,所以文字说明和版本不同,仅做示意用--------------
下载OpenCV for Windows安装包

[*]运行安装包,解压到D盘根目录(可以修改为其他目录);
[*]运行CMake,设置好OpenCV的源码路径及构建路径,如下图所示:

http://img.my.csdn.net/uploads/201212/13/1355371059_8207.png


[*]点击Configure按钮,如下图所示:

http://img.my.csdn.net/uploads/201212/13/1355371187_8594.png


[*]在弹出的编译器选择界面中选择Visual Studio 10,如下图所示:

http://img.my.csdn.net/uploads/201212/13/1355371227_7565.png


[*]等待配置完成,出现如下界面:

http://img.my.csdn.net/uploads/201212/13/1355371312_6473.png
---------------以上为示意图,非admin实际验证图,所以文字说明和版本不同,仅做示意用--------------

2.编译OpenCV Debug和Release版本库:2.1使用VS2008打开OpenCV.sln文件,在Debug下,选择OpenCV.sln文件,然后进行如下操作:在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。
2.2换Build模式为Release,重新进行一次构建;

3.配置Windows环境变量:将D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc10\bin加入到系统环境变量Path中。具体步骤为:
右键我的电脑->属性->详细设定标签里->环境变量,找到Path,记得不要覆盖或者直接用Path名字添加新环境变量,会覆盖掉,而是要在后面加分号”;”,追加新值。例如指定系统环境变量path的bin文件夹,以前位于编译指定的文件夹中,此次却是D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\bin,注意!
注意:1.opencv2.4.3与以前版本添加的环境变量不同,请注意!!!

4.为VS2008 配置openCV环境:1 打开VS 2008,菜单 Tools -> Options -> Projects and Solutions -> VC++ Directories2 在Show directories for中,选择include files,加入目录 D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\include
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\include\opencv
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\include\opencv2
3 在show directories for中,选择library files,加入目录D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib
5.具体OpenCV工程配置或者代码:
5.1 打开VS 2008,创建一个Win32控制台程序OpenCV245ConfigTestProject;5.2 选择Solution Explorer里的OpenCV245ConfigTestProject项目,点击鼠标右键,选择Properties,选择Linker中Input(调试目录)。5.3 (非必要,也可在第4步的代码头部添加额外代码实现)在Additional Dependencies 中添加如下目录:opencv_core245d.libopencv_highgui245d.libopencv_imgproc245d.libopencv_ml245d.libopencv_stitching245d.lib或者
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_core245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_highgui245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_imgproc245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_ml245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_stitching245d.lib或者
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_core245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_highgui245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_imgproc245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_ml245d.libD:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_stitching245d.lib或者 不用在每个工程的Additional Dependencies 追加,而是在代码的头部加上如下代码
#pragma comment(lib, "opencv_core245d")#pragma comment(lib, "opencv_highgui245d")#pragma comment(lib, "opencv_imgproc245d")#pragma comment(lib, "opencv_ml245d")#pragma comment(lib, "opencv_stitching245d")
注意:(关于额外依赖lib参考这里http://blog.tianya.cn/blogger/post_show.asp?BlogID=1450762&PostID=42564625)(下文的数字240全改成245即对应OpenCV2.4.5版本)
这里额外添加的,通常需要链接的lib文件只有:opencv_core240d.lib、opencv_imgproc240d.lib、opencv_highgui240d.lib、opencv_objdetect240d.lib(对应Debug)和 opencv_core240.lib、opencv_imgproc240.lib、opencv_highgui240.lib、opencv_objdetect240.lib(对应Release)。

如果用到SIFT或SURF,另外还需要添加:opencv_nonfree240d.lib(对应Debug)和 opencv_nonfree240.lib(对应Release)。

(添加附加依赖项的lib文件)
#ifdef _DEBUG
#pragma comment (lib, "opencv_calib3d240d.lib")
#pragma comment (lib, "opencv_contrib240d.lib")
#pragma comment(lib,opencv_imgproc240d.lib")
#pragma comment (lib, "opencv_core240d.lib")
#pragma comment (lib, "opencv_features2d240d.lib")
#pragma comment (lib, "opencv_flann240d.lib")
#pragma comment (lib, "opencv_gpu240d.lib")
#pragma comment (lib, "opencv_highgui240d.lib")
#pragma comment (lib, "opencv_legacy240d.lib")
#pragma comment (lib, "opencv_ml240d.lib")
#pragma comment (lib, "opencv_objdetect240d.lib")
#pragma comment (lib, "opencv_ts240d.lib")
#pragma comment (lib, "opencv_video240d.lib")
#else
#pragma comment (lib, "opencv_calib3d240.lib")
#pragma comment (lib, "opencv_contrib240.lib")
#pragma comment(lib,opencv_imgproc240.lib")
#pragma comment (lib, "opencv_core240.lib")
#pragma comment (lib, "opencv_features2d240.lib")
#pragma comment (lib, "opencv_flann240.lib")
#pragma comment (lib, "opencv_gpu240.lib")
#pragma comment (lib, "opencv_highgui240.lib")
#pragma comment (lib, "opencv_legacy240.lib")
#pragma comment (lib, "opencv_ml240.lib")
#pragma comment (lib, "opencv_objdetect240.lib")
#pragma comment (lib, "opencv_ts240.lib")
#pragma comment (lib, "opencv_video240.lib")
#endif

5.4 测试工程代码如下:
#include "stdafx.h"
#include <string>
#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;

//如果已经在工程的额外依赖文件中添加下面的lib库文件,那么这部分不必要
#pragma comment(lib, "opencv_core245d")
#pragma comment(lib, "opencv_highgui245d")
#pragma comment(lib, "opencv_imgproc245d")
#pragma comment(lib, "opencv_ml245d")
#pragma comment(lib, "opencv_stitching245d")


int _tmain(int argc, _TCHAR* argv[])
{
   // open the file
         IplImage *img = cvLoadImage("lena.jpg");
   if (!img)
   {
         printf("Error: could not open the image file.\n");
         return 1;
   }
   // display the image
   cvNamedWindow("Image:",CV_WINDOW_AUTOSIZE);
   cvShowImage("Image:",img);

   // wait for the user to press a key in the GUI window
   cvWaitKey(0);

   // Free the resourse
   cvDestroyWindow("Image:");
   cvReleaseImage(&img);

   return 0;
}

xywhere 发表于 2013-4-16 18:23:48

太复杂了。。。
页: [1]
查看完整版本: 【admin超详细验证版】OpenCV2.4.5+Win7 32bit+VS2008配置说明贴