这个搞了一下午才弄好,真是惭愧。其实opencv的环境搭建很简单。
1.首先下载目前最新的OpenCV-2.4.5.exe,进入下载页面后可以根据你的系统选择相应的文件现在。
2.下载完后,运行下载的exe文件。选择要解压的文件目录,如下图(比如我们将其解压在C盘根目录下):
3.解压完后,需要设置环境变量。右键我的电脑->属性-〉高级系统设置-〉环境变量,在系统变量中查找Path变量,编辑Path变量,在其值中添加C:\opencv\build\x86\vc10\bin;(有分号),此版本的opencv没有tbb无需在Path变量中添加有关tbb的值。
配置完环境变量后,最好重启一下电脑。
注意:在这里添加的值应为x86\vc10路径下的。经本人验证,虽然2.4.5版本的opencv在x86路径下相比以前的版本多了vc11路径,但是Path环境变量设置为x86\vc11的话,最后在程序执行时会提示MSVCP110D.dll丢失。还有虽然我的win8是64位的但是Path环境变量不能添加C:\opencv\build\x64\vc10\bin;或者是C:\opencv\build\x86\vc11\bin; ,本人认为应该是vs2010的问题,由于vs2010只有32位版本的,所以运行的opencv只能也是32位的,所以环境变量不能配置为64位的。
4.配置完环境变量之后,就该进入vs2010配置项目了。
打开vs2010,新建一个控制台空项目,然后在该项目中添加一个.cpp文件(后面会附有测试代码,copy到该cpp文件中即可,配置完后再运行程序)。
根据以下配置弄完以后,以后在其他项目中就不需要再次对项目进行配置了。
然后,切换到"属性管理器",在项目的"Debug|Win32"下,双击“Microsoft.Cpp.Win32.user”选项,如下图所示:
在左侧的属性栏中找到“VC++目录”,如下图所示:
在上图的右侧有很多的目录项,我们要改的包括包含目录和库目录(注意按照自己opencv的安装路径,填写相应的值):
其中在包含目录中添加:C:\opencv\build\include;
C:\opencv\build\include\opencv;
C:\opencv\build\include\opencv2;
在库目录中添加:C:\opencv\build\x86\vc10\lib;
然后,在左侧栏目中找到链接器-->输入,如下图所示:
然后,在右侧的附加依赖项中添加以下项(以下项目可以根据项目不同进行删减):
opencv_core245d.lib
opencv_features2d245d.lib
opencv_flann245d.lib
opencv_highgui245d.lib
opencv_gpu245d.lib
opencv_haartraining_engined.lib
opencv_imgproc245d.lib
opencv_legacy245d.lib
opencv_ml245d.lib
opencv_nonfree245d.lib
opencv_objdetect245d.lib
opencv_photo245d.lib
opencv_stitching245d.lib
opencv_superres245d.lib
opencv_ts245d.lib
opencv_video245d.lib
opencv_videostab245d.lib
.cpp文件的测试代码(将某张图片放到你新建项目下,将下面代码中的“lena.jpg”,替换为你的图片的名称):
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("lena.jpg");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("image",img);
waitKey();
return 0;
}
运行程序,可看到如下结果:
至此,opencv+vs2010就算是配置完毕了。
5.发现的问题:
网上opencv的测试代码一般有两种,第一种是上面的.cpp中的代码,第二种是如下代码:
#include <highgui.h> //OpenCV 的图像显示函数头文件
int main()
{
IplImage *src; // 定义IplImage指针变量src
src = cvLoadImage("lena.jpg",-1); // 将src指向当前工程文件目录下的图像lena.jpg
cvNamedWindow("lena",0);//定义一个窗口名为lena的显示窗口
cvShowImage("lena",src);//在lena窗口中,显示src指针所指向的图像
cvWaitKey(0);//无限等待,即图像总显示
cvDestroyWindow("lena");//销毁窗口lena
cvReleaseImage(&src);//释放IplImage指针src
return 0;
}
其中,在Release模式下对第一种运行,就会出现错误,经过实践发现是在配置附加依赖项时出现的问题:
imread()函数在debug模式下只能使用debug链接库,例如上面配置的opencv_core245d.lib,名称最后有d的lib;
在Release模式下只能使用Release链接库,例如opencv_core245.lib,名称最后没有d的lib。
本文详细介绍了如何在Windows 8 64位系统上配置OpenCV 2.4.5和Visual Studio 2010的开发环境,包括下载OpenCV、设置环境变量、配置VS2010项目属性,以及解决调试和释放模式下的编译问题。通过这个过程,开发者可以成功搭建用于图像处理的开发环境。

被折叠的 条评论
为什么被折叠?



