本文进行的opencv的重编译所使用的软件系列为opencv v2.4.10+vs 2010 win64+cmake v3.3 win32。
1.软件下载
vs2010的下载:链接:http://pan.baidu.com/s/1dE1DKzv 密码:tvf0
opencv V2.4.10下载: 链接:http://pan.baidu.com/s/1slHKD9z 密码:0oh4
cmakeV3.3下载:链接:http://pan.baidu.com/s/1c1un1c 密码:v4m6
2.软件的安装
vs2010解压后直接安装即可。
opencv解压为D:\opencv\opencv-2.4.10下,所解压文件中含有文件CMakeLists.txt。
cmake在安装时,需注意选中“Add CMake to the system PATH for all users”选项,并向桌面添加快捷方式。
3.编译opencv工程
找到opencv的源码位置(即刚才解压出来的opencv文件),随便找一个位置存放生成的二进制工程文件,如上图所示。
而后点击下方的configure进行工程的配置,并选择选项Visual Studio 10 2010 win64,但却出错了,提示“error in configuration process project files may be invalid”,并在最下方的输出窗口提示“check for working cxx compiler using:visual studiobroken”。这种情况的解决方案为:在目录下“C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe”和vs的安装目录下“D:\Microsoft visual studio\VC\bin\cvtres.exe”两个文件的版本号,删除旧的那个目录下的cvtres.exe文件。详见http://www.2cto.com/os/201704/628877.html
上述问题解决后,点击configure后等待完成第一轮配置,此时cmake正中央的颜色是红色的,而后再次点击configure进行第二轮配置,此时红色的部分就会变白。这时就可以进行generate操作了,等待完成后就可以得到相应的opencv工程了。
在生成工程的存放位置找到文件“OPENCV.sln”,使用vs打开。选择CMakeTargets下INSTALL,点击右键中“生成”,生成Debug版dll,lib。而后再在release模式下,同样右键INSTALL,生成release版的dll和lib。到此为止我们就完成了opencv的重编译,并可以实现代码的跟踪了(按F11)。
另外注意到一个问题就是,编译出来的额opencv工程很大,占用大概6个多G的空间,怎么在不影响代码跟踪功能的前提下减小空间的占用呢?先将文件夹D:\opencv\opencv_project\install拷贝到D:\opencv\目录下,并改名为vc10x64。然后分别在vs软件中的两个模式debug和release下使用“清理解决方案”(生成->清理解决方案),去除多余的文件,这时文件的大小成功缩小到的200多M。
4.修改opencv的环境变量
计算机->属性->高级系统设置->环境变量->用户变量,在Path中添加变量值“D:\opencv\vc10x64\x64\vc10\bin”。
5.测试opencv工程
在vs软件下,点击文件->新建->项目,建立一个空控制台项目。
选择release模式和平台x64!!!!!
在项目->属性对话框中,左侧“配置”选择“Debug”,然后“配置属性”->VC++目录,在右侧设置“包含目录”,新添加:
D:\opencv\vc10x64\include
在项目->属性对话框中,左侧“配置”选择“release”,然后“配置属性”->VC++目录,在右侧设置“库目录”,新添加:
D:\opencv\vc10x64\x64\vc10\lib
右击项目-->属性-->配置属性-->常规,然后在右边的“项目默认值”中的“MFC的使用”选项中选择“在共享 DLL 中使用 MFC”。
下面将添加附加依赖项,依赖项的添加须与目录下D:\opencv\vc10x64\x64\vc10\lib的实际情况进行填写,内容与opencv的版本号有关。
在配置中选择Debug,在“链接器”->“输入”,配置“附加依赖项”,添加以下项:
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_ml2410d.lib
opencv_nonfree2410d.lib
opencv_objdetect2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_videostab2410d.lib
在配置中选择Release,按照上面操作,添加如下依赖项:
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
opencv_nonfree2410.lib
opencv_objdetect2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_videostab2410.lib
6.编写测试代码
#include "afx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat img = imread("C:/Users/Peak/Desktop/11.png");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("image", img);
waitKey();
return 0;
}
编译(F7)并运行(ctrl+F5)后即可,将图片显示出来。
参考:http://www.cnblogs.com/Genrobot/p/6055431.html
http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html