前几天刚接触opencv,自己想看看opencv到底功能有多强大!于是乎下载了一个最新版本的(opencv2.4.2,当时是最新的,于2012.10.20)。加上visual studio 2010 就开始干活了……

        学习就是一个不断探索的过程,刚开始配置vs2010和opencv的时候,感觉很麻烦,配置了好多次都没有成功,最后总结了一下,是因为自己对自己的不信任造成的。

无论在网上、论坛上看到的任何方法,都要认真的去尝试一下,不要抱有侥幸心理,以为会不知不觉的把它们配置好,就算弄好了,你也只是二把刀!不会长久的……

回想自己做过的很多事,往往在做成功后才感觉它不是想象中的那么难。甚至责怪自己当时怎么就那么笨呢!?还差一步就弄好了,自己就是没有做那一点点事情,还有时候自

我安慰的告诉自己当时是有那个能力的!  哈哈…… 现在看起来是多么的可笑,作为程序员或者与之相关的工作,失之毫厘,差之千里。这句话一点也没错。往往在一些小小的

细节上我们输给了别人。

废话少说,说说原理性的东西吧,所话说,磨刀不误砍柴工

首先opencv是什么?OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法的集合。在我们安装

opencv的过程中就可以看到,它实际上是一个解压的过程。就是把他的函数库解压到自己的计算机硬盘上。对,就这么简单,没有什么修改注册表、自动与vs2010相关联等等

奇怪的想法……就是解压了,然后让你去使用它。那如何使用他呢,这就是vs2010与opencv的配置过程

配置的过程就是让你的vs程序找到opencv库函数,然后去利用它实现你想实现的功能。 (这句话就是配置的目的!!)


         大家都知道,自己的vc++程序的运行依赖于自己的函数库,现在你想用别人的APi,当然要享受到同样的待遇,也就是得到相应的地位!


         首先,配置环境变量PATH ,众所周知,path是程序运行过程中寻找所需文件的路径,要把opencv的bin目录也要配置进去 %opencv%\build\x86\vc10\bin  当然在这之前你要让编译器知道%opencv%是设么东西?就是安装根目录!素以你要在环境变量里加一个opencv,值为C:\opencv (这取决你自己的安装目录!)

 

好了,就这样,环境变量好了,继续走……

         进入vs2010,真正的游戏开始了 。任意建一个opencv的test工程,win32控制台应用程序--确定--完成 创建好一个工程,把现成的代码复制进去,前提是保证无误!

配置真正开始:

1、视图 -----属性管理器    双击工程,会显示属性页,这里主要配置三个地方就可以了。

2、配置属性----VC++ 目录   在包含目录选项里面添加 C:\opencv\build\include C:\opencv\build\include\opencv C:\opencv\build\include\opencv2 三个目录即可

3、配置属性 ------VC++目录  在库目录里面添加   C:\opencv\build\x86\vc10\lib  即可

4、配置属性-----连接器---输入    在附加依赖项里面添加 以下文件 

opencv_contrib242d.lib
opencv_core242d.lib
opencv_features2d242d.lib
opencv_flann242d.lib
opencv_gpu242d.lib
opencv_highgui242d.lib
opencv_ml242d.lib
opencv_video242d.lib

每个都要换行!其实这里面好多都用不到,但我不能保证你以后用不到,所及就加上吧!!

注意!每个文件名最后都有数字242d     242  表示版本是2.4.2  你打开你的安装目录,看一下是设么版本的修改一下就可以。d表示是  debug下使用的 ,如果是release下的就把d删除掉就可以…

注意:!!!!!

C:\opencv\build\common\tbb\ia32\vc10目录下的tbb_debug.dll tbb.dll拷贝放入C:\opencv\build\x86\vc10\bin目录下解决无法编译的问题

 

5、完成配置  如果你那里没有配好,那就要好好思考一下哪里漏掉了


到此为止,opencv里面的额函数库你就可以随心所欲的使用了……

附加个人已经成功编译运行的程序

#include <opencv2/opencv.hpp>

using namespace std;

using namespace cv;

int main(int argc, char* argv[])

{
const char* pImg = "D:\\visual studio\\Projects\\opencv2\\psu.jpg"; //转义
const char * fname = "D:\\visual studio\\Projects\\opencv2\\psucopy.png";
Mat img =imread(pImg ,0);//从文件中读取图像


if(img.empty())

{
fprintf(stderr, "Can not load image %s\n", pImg);
return -1;

}
imshow("image", img); //显示图像
if(!imwrite(fname,img)) //存储图像img到文件psucopy.jpg
{
fprintf(stderr,"can not copy from the image !",fname);
return -1;
}
//此函数等待按键,按键盘任意键就返回,防止稍纵即逝的闪过……
waitKey(5000); //设置延迟毫秒,缺省值为0,表示无穷大。在此延时五秒。


return 0;
}