1.初始安装
1.1 软件准备
我是在VS2012下安装opencv 2.4.9(windoes)
opencv的下载地址:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
选择适合你的版本,我下载的是opencv2.4.9版本。
1.2 安装opencv
双击下载的opencv-2.4.9.exe文件,选择你想要解压的位置(注意:opencv是解压安装)
解压完成后,进行环境变量配置
2.环境变量配置
1) –> 控制面板 –> 系统和安全 –> 系统 –> 高级系统设置 –> 高级 –> 环境变量,此时弹出环境变量设置对话框,如下:
2)在下方的系统变量中,点击“新建”,创建变量名为cv2.4.9系统变量(注意:这里的变量名随便),如下图所示:
这里的变量值是D:\Program Files\openCV2.4.9\opencv\build\x86\vc11\bin(即opencv解压后的bin目录路径)。这里尤其注意一点:一定要选择x86文件夹下的vc11(原因后面解释)
3)将opencv2.4.9变量包含到PATH中去,如下图所示:
到这里,opencv的环境变量的配置就完成了。
3.项目属性设置
1)新建工程:选择Win32控制台应用程序,并且为你新建的工程取一个名字,如下图所示:
点击“确定”,弹出下面对话框
2)
点击“下一步”,弹出Win32应用程序向导对话框,并按照下图选择选项,点击“完成”即可
3)打开项目属性管理器(视图属性管理器),如下:
3.1)配置项目的Debug属性
右击Debug|Win32添加新项目属性表,并且起一个属性名,如下所示:
这个时候,我们看到Debug属性下面多了一条我们刚刚创建的opencv2.4.9属性,如下所示:
然后右击上述opencv2.4.9属性,弹出其属性页,如下所示:
修改包含目录和库目录
包含目录:D:\Program Files\openCV2.4.9\opencv\build\include
库目录:D:\Program Files\openCV2.4.9\opencv\build\x86\vc11\lib
接着,点属性页中的链接器下拉菜单下的“输入”,修改其附加依赖项,如下所示:
添加的内容如下:
opencv_core249d.lib
opencv_imgproc249d.lib
opencv_highgui249d.lib
opencv_ml249d.lib
opencv_video249d.lib
opencv_features2d249d.lib
opencv_calib3d249d.lib
opencv_objdetect249d.lib
opencv_contrib249d.lib
opencv_legacy249d.lib
opencv_flann249d.lib
最后点击确定按钮。
3.2)配置项目的Release属性
配置Release属性与上面的Debug属性基本一样,唯一的区别就是在修改附加依赖项的时候,添加的内容将其中的库文件名最后一个d去掉即可,比如: “opencv_core249d.lib” 变成”opencv_core249.lib”。全部去掉后变成:
opencv_core249.lib
opencv_imgproc249.lib
opencv_highgui249.lib
opencv_ml249.lib
opencv_video249.lib
opencv_features2d249.lib
opencv_calib3d249.lib
opencv_objdetect249.lib
opencv_contrib249.lib
opencv_legacy249.lib
opencv_flann249.lib
4.测试代码
在解决方案资源管理中,项目opencvTest的源文件中新建opencvTest.cpp
测试代码1:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
//从文件中读入图像
Mat img = imread("E:\\picture\\IMG_0743.jpg");
//如果读入图像失败
if(img.empty())
{
fprintf(stderr,"Error: load image failed.");
return -1;
}
//窗口显示
namedWindow("image",CV_WINDOW_AUTOSIZE);
//显示图像
imshow("image",img);
waitKey();
return 0;
}
最终运行结果:
测试代码2:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("E:\\picture\\IMG_0743.jpg");
if(img.empty())
{
fprintf(stderr,"Error: load image failed.");
return -1;
}
Mat grey;
cvtColor(img, grey, CV_BGR2GRAY);
Mat sobelx;
Sobel(grey, sobelx, CV_32F, 1, 0);
double minVal, maxVal;
minMaxLoc(sobelx, &minVal, &maxVal); //find minimum and maximum intensities
Mat draw;
sobelx.convertTo(draw, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));
namedWindow("src(http://blog.csdn.net/kkdd2013)", CV_WINDOW_AUTOSIZE);
imshow("src(http://blog.csdn.net/kkdd2013)", img);
imshow("dst(http://blog.csdn.net/kkdd2013)", draw);
waitKey();
return 0;
}
最终运行结果:
左边是原图,右边是经过索贝尔算子处理后的效果图
5.遇到的问题及解决方法
1)问题1:无法启动此程序,因为计算机中丢失MSVCP120D.dll。尝试重新安装该程序以解决此问题。
度娘找到的解决方法:首先搞清楚vs2012对应的应该用无法启动此程序,因为计算机中丢失MSVCP110D.dll,而MSVCP120D.dll对应的版本是vs2013,现在我在VS2012上遇到丢失MSVCP120D.dll的问题,是因为vs2012错误的用了2013版的dll,具体为啥错用,不清楚。
既然在vs2012上遇到了这个问题,就要解决。网上最好的解决方法是:下载安装VC++ 2013 32位可再发行组件包vcredist 2013 x86
下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=40784
这样就可以使用 Visual Studio 2013 生成的 C++ 应用程序时所需的运行时组件。
2)问题2:
编写测试代码中,图片地址写错,导致找不到图片信息。
错误原因:图片路径地址不能这样写:E:\picture\IMG_0743.jpg,而应该写成E:\picture\IMG_0743.jpg或者E:/picture/IMG_0743.jpg