Win7系统Visual Studio下的openCV环境配置

-回复 -浏览
楼主 2019-09-12 16:11:40
举报 只看此人 收藏本贴 楼主

OpenCV 环境配置

【本文为Windows7操作系统,64位,Visual Studio 2012,OpenCV版本号为2.4.9】


从http://opencv.org/下载opencv的源码


这里选择opencv 2.4.9,下载后解压到选定的目录下


此时目录下的文件夹为:


其中build是SDK,sources是源码库。

build中的文件夹分别为:doc:文档文件夹,include:C/C++头文件文件夹,java:java开发库文件夹,python:python开发库文件夹,×86和64,是C/C++的64和32位库文件夹,其中的vc10,11,12分别对应VC++2010,2012,2013

.\opencv\build\x86\vc11中有 bin,lib,staticlib三个文件夹,其中bin是公用动态链接库(dll), lib文件夹是动态库隐式调用所需的静态链接文件, staticlib文件夹是静态链接库。

下面添加环境变量。计算机 —> 属性 —> 高级系统设置 —> 环境变量

【注:环境变量(environmentvariables是操作系统设定的运行环境的参数,当操作系统运行程序时,如果没有给出程序的完整路径,在当前文件夹有找不到该程序时,系统会按照环境变量给出的路径查找程序。环境变量分为系统变量和用户变量,相当于globallocal variable,系统变量所有用户公用,用户变量仅限当前用户使用


将SDK的bin文件夹作为变量值,加入系统变量Path


用户变量里新建一个名为opencv2.4.9的变量,把build作为变量名


PATH里增加SDK的bin

.\opencv\build\x86\vc12\bin

 

环境变量配置完成。下面对于visual studio 的项目配置属性:

 

新建一个项目,控制台应用程序,如下

打开属性管理器


在Debug|Win32上右击,添加新项目属性表,命名为opencv2.4.9,修改包含目录库目录可执行文件目录,分别修改为:

D:\OPENCV\opencv\build\include;D:\OPENCV\opencv\build\include\opencv;D:\OPENCV\opencv\build\include\opencv2

D:\OPENCV\opencv\build\x86\vc11\lib

D:\OPENCV\opencv\build\x86\vc11\bin


在链接器中添加附加依赖项


添加的内容如下:

opencv_calib3d249d.lib

opencv_contrib249d.lib

opencv_core249d.lib

opencv_features2d249d.lib

opencv_flann249d.lib

opencv_calib3d249.lib

opencv_contrib249.lib

opencv_core249.lib

opencv_features2d249.lib

opencv_flann249.lib

opencv_gpu249.lib

opencv_highgui249.lib

opencv_imgproc249.lib

opencv_legacy249.lib

opencv_ml249.lib

opencv_nonfree249.lib

opencv_objdetect249.lib

opencv_photo249.lib

opencv_stitching249.lib

opencv_ts249.lib

opencv_video249.lib

opencv_videostab249.lib

opencv_gpu249d.lib

opencv_highgui249d.lib

opencv_imgproc249d.lib

opencv_legacy249d.lib

opencv_ml249d.lib

opencv_nonfree249d.lib

opencv_objdetect249d.lib

opencv_photo249d.lib

opencv_stitching249d.lib

opencv_ts249d.lib

opencv_video249d.lib

opencv_videostab249d.lib

(d代表debug,release版本中需要去掉带d的lib)

 

【注:包含目录,库目录,附加依赖项。 包含目录是指在include头文件(*.h)时查找的目录,库目录是寻找*.lib文件的目录,*.lib文件是C++头文件中的函数的实现的*.cpp,*.cc,*.c文件打包而成,附加依赖项就是这些lib库,包含着函数的具体实现,如果库目录错误,会提示link error:找不到某lib,而附加依赖项错误,会提示link error:未定义的函数】

 

接下来配置Release|Win32,基本同上,在附加依赖项中去掉文件名的d(d代表debug)。如下


然后运行一段测试程序,如下:

#include <opencv2/opencv.hpp>        

using namespace cv;      

int main()  

{  

Mat img = imread("test.jpg",1);  

Mat grey; 

Mat sobel;   

double mini, maxi; 

Mat display; 

cvtColor(img, grey, CV_BGR2GRAY);    

Sobel(grey, sobel, CV_32F, 1, 0); 

minMaxLoc(sobel, &mini, &maxi);

sobel.convertTo(display, CV_8U,255.0/(maxi - mini), -mini * 255.0/(maxi - mini));    

namedWindow("src",CV_WINDOW_AUTOSIZE); 

imshow("src", img); 

namedWindow("dst",CV_WINDOW_AUTOSIZE); 

imshow("dst", display); 

waitKey();     

  return 0;   

}  


出现的报错:

计算机中丢失:opencv_core249d.dll,将.\build\x86\vc11\bin和. \build\x64\vc11\bin中的所有内容分别拷贝至C:\Windows\System32和C:\Windows\SysWOW64,即可解决。但是出现其他问题:

“Test.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

“Test.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开PDB 文件。

“Test.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开PDB 文件。

解决方法:

调试—>选项和设置—>调试—>常规—>启用源服务器支持

调试—>符号—>Microsoft符号服务器

问题解决。

然后运行出错

下载DirectX Repair,检测并修复动态链接库(*.dll)


再运行测试程序,查看结果

终于好了,哈哈哈~~~

这样就可以假期安心地加班码代码了



我要推荐
转发到