Win7系统Visual Studio下的openCV环境配置
Win7系统Visual Studio下的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文件夹是静态链接库。
下面添加环境变量。计算机 —> 属性 —> 高级系统设置 —> 环境变量1.
将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)2.
接下来配置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符号服务器
问题解决。
然后运行出错,错误提示:应用程序无法正常启动,返回值为 -1073741701(0xc000007b)。
下载DirectX Repair,检测并修复动态链接库(*.dll)
再运行测试程序,查看结果
终于好了,哈哈哈~~~
- 【注:环境变量(environmentvariables)是操作系统设定的运行环境的参数,当操作系统运行程序时,如果没有给出程序的完整路径,在当前文件夹有找不到该程序时,系统会按照环境变量给出的路径查找程序。环境变量分为系统变量和用户变量,相当于global和local variable,系统变量所有用户公用,用户变量仅限当前用户使用】 ↩
- 【注:包含目录,库目录,附加依赖项。 包含目录是指在include头文件(.h)时查找的目录,库目录是寻找.lib文件的目录,.lib文件是C++头文件中的函数的实现的.cpp,.cc,.c文件打包而成,附加依赖项就是这些lib库,包含着函数的具体实现,如果库目录错误,会提示link error:找不到某lib,而附加依赖项错误,会提示link error:未定义的函数】 ↩