一 安装opencv
1.1 解压安装包
所谓的安装,其实就是吧opencv的源码和编译好的dll库文件解压出来而已。目录自行选择,最好不要是中文路径。
1.2 配置环境变量
之所以要配置环境变量,是因为Opencv使用的是动态链接库,在运行Opencv的程序时需要依赖这些动态链接库,配置环境变量,就是为了告诉程序,Opencv所依赖的动态链接库在什么地方。
因为我装的是VS2012对应的目录为vc11,进入opencv\build\x86\vc11\bin中,可以看到很多的*.dll文件,这些就是Opencv依赖的动态链接库。这里即便是x64的体统,也最好选择x86的库。(注:VS2013对应vc12,VS2012对应vc11,VS2010对应vc10)
在控制面板中搜索“环境变量”,编辑系统环境变量->高级->环境变量->系统变量->Path->编辑
在最后添加一个分号”;”后,再将上面的dll文件所在的绝对路径拷贝到这里来,最终写入的是;D:\ProgramFiles\opencv\opencv\build\x86\vc11\bin
二 配置vs2012的Opencv环境
2.1 新建工程
新建一个C++工程,选择Win32的控制台应用程序。
在工程设置中选择Empty Project
2.2 新建工程配置表单
找到Property Manager,如果没有看到,可以在view->Property Manager中找到这个选项卡。
选择Debug->Add New Project Property Sheet
将新建的属性表单的名字命名为OpenCV_Debug
2.3 添加Opencv的头文件和库文件
因为Opencv是开发开放源码的,我们再使用Opencv的库函数时,可以直接查看源码。包含头文件的存放路径就是为了可以索引到源码,包含库文件是为了可以直接调用生成好的Opencv函数,而无需我们自己编译。
双击OpenCV_Debug,进入属性表单的编辑界面。
在VC++ Directories->Include Directories中添加OpenCV所有模块的头文件。
选择下拉,然后进入Edit,添加Opencv下include 的路径。
以同样的方式添加Opencv在Vs2012下的lib
2.4 添加依赖库
在编译完成后,后有link的过程,这个过程中会查找所依赖的Opencv的lib,此处就是将需要依赖的lib都列出来,实际上就是Opencv的模块库。
添加的lib列表如下,其中d的意思是debug,即这些库是在debug模式下生成和使用的。
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
从2.2开始再做一次,只是将Debug换成Release。在最后添加的依赖库文件列表如下,这里由于是Release模式,后面没有d。
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
最终可以得到如下的两种配置文件:
2.5 为已有工程添加Opencv配置
对于后来新建的工程,就无需在重复上面的操作了,只需要在Property Manager中选择
Add Existing Property Sheet ,选择刚才建立的Debug配置和Release配置即可。
三 配置VLD
由于C++没有垃圾管理机制,内存的分配和释放都需要程序员自己来控制,在C++代码中,内存泄露如果不严重的话,短时间内对程序没有太大的影响,在进程终止时,所分配的内存便会释放,但是长时间运行的话,其性能上的消耗是惊人的,甚至会影响其他程序的运行同时,内存问题本身是不明显的,当出现异常时很难检查。
VLD是一款在windows下使用的C++内存泄露检查工具,可以很好的检查内存泄露问题,只能在Debug下使用。下载visual leak detector安装后,可从2.3步开始
添加vld的头文件
添加vld的库文件
添加vld的库依赖
使用时,只需要添加#include <vld.h>即可
四 测试代码
#include <opencv2/opencv.hpp>
#include <vld.h>
using namespace cv;
const string windows_name ="ImageWindows";
int main()
{
//type指的是打开图片的方式,此处是根据图片的原始数据打开真实的图片
inttype = CV_LOAD_IMAGE_ANYCOLOR | CV_LOAD_IMAGE_ANYDEPTH;
Matimg = imread("./image/EVA_03.jpg",type);//此处我新建了一个文件夹image
//在image下放了一张图片EVA_03.jpg
if(img.empty())
{
fprintf(stderr,"Error:loadimage failed.");
return-1;
}
namedWindow(windows_name,CV_WINDOW_AUTOSIZE); //创建一个名字为windows_name的窗口
imshow(windows_name,img); //在窗口windows_name中显示刚才的图片
waitKey();//等待一个按键,然后退出程序
return0;
}
运行效果如下图:
在Debug模式下,可以看到VLD的输出。