Windows XP下vs2010中配置OpenCV2.4.3
改名为:cmake + opencv2 +VS更合适。
其实,VS2010可以换为其它版本,如vs2005,已亲自验证。
(该文章不涉及TBB,TBB加速用的,cmakelist.txt默认是不编译的,研究时基本上用不到。若用,cmake界面中需要设置,网上教程很多。)
9、 使用vs2010打开OpenCV.sln文件,分别在Debug和Release下,选择Solution Explorer里的Solution OpenCV,点击右键,运行”Rebuild Solution”,点击CMakeTargets下的INSTALL,build;会在D:\Soft\OpenCV2.4.3\vs2010\install文件夹下的bin文件夹中存放相应的动态库,在lib文件夹下存放相应的静态库;
------------“点击CMakeTargets下的INSTALL,build”的目的是将”Rebuild Solution”生成的“bin lib include”文件夹下的文件,整理复制到新生成的install文件夹下。
------------写我们自己的程序时,你可以选择定位到”Rebuild Solution”生成的“bin lib include”文件夹下的文件,也可以定位到install文件夹里的“bin lib include”文件夹下的文件,结果是一样的。
------------看出来了吧,“点击CMakeTargets下的INSTALL,build”的目的只有一个,整理!!
-------------利用*.sln可以找到你想看的OPENCV函数源代码。
如果不利用cmake生成sln,直接在OPENCV安装目录下的modules下寻找,对于一些函数,会定位错误。
例如svm.cpp的void CvSVM::predict( cv::InputArray _samples, cv::OutputArray _results )中的predict(&samples, &results);
直接在OPENCV安装目录下的modules下寻找,指向了ml.hpp的virtual float predict( const CvMat* samples, CV_OUT CvMat* results ) const,然后就再也找不到定义了。
而*.sln中,则会指向svm.cpp的float CvSVM::predict(const CvMat* samples, CV_OUT CvMat* results) const,成功找到了定义、
此外:
CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const,这类有CV_WRAP前缀,表示它们是从DLL里导出的函数,即我们在程序当中可以调用的函数,直接在OPENCV安装目录下的modules下寻找,无法指向。而*.sln中,则会指向正确的定义之处。
11、 选中工程-->属性-->配置属性-->链接器-->输入-->附加依赖性:Debug和Release,添加相应的.lib
-----------我发现,网上教程,VS中多利用静态库文件*.lib;eclipse中多利用*.dll文件
----------有个问题,我写OPENCV程序时,附加依赖性,只导入了release生成的文件,即文件名不含d的,debug时也没报错啊
求解惑!