由于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的源码路径及构建路径,如下图所示:



  • 点击Configure按钮,如下图所示:



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



  • 等待配置完成,出现如下界面:


---------------以上为示意图,非admin实际验证图,所以文字说明和版本不同,仅做示意用--------------

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

2.2Build模式为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++ Directories
2 在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.lib
opencv_highgui245d.lib
opencv_imgproc245d.lib
opencv_ml245d.lib
opencv_stitching245d.lib
或者
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_core245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_highgui245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_imgproc245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\vs2008\lib\Debug\opencv_ml245d.lib
D:\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.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_imgproc245d.lib
D:\2_Software\20130415Win7VS2008OpenCV\opencv245\build\x86\vc9\lib\opencv_ml245d.lib
D:\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;
}

共收到 1 条回复
xywhere · #2 · 2013-4-16 18:23:48  回复 支持 反对
太复杂了  。。。
回帖
B Color Image Link Quote Code Smilies
Command + Enter
快速回复 返回顶部 返回列表