您的位置:首页 > 运维架构

VS2012+CMake重编译和配置OpenCV

2016-01-22 01:01 411 查看
我的笔记本是Win7 64位的,已经装了VS2012,我要编译64位的OpenCV库。

1、下载CMakeOpenCV,网址打不开的话可以百度网盘下载

将CMake安装好,将OpenCV解压到 D:\Program Files (x86)\下

2、在D:\Program Files (x86)\下新建文件夹 OpenCVProject,用于存放编译的OpenCV工程。打开CMake,点“Browse Source…”,选择OpenCV的源码目录(D:/Program Files (x86)/opencv/sources);然后点“Browse Build…”,选择刚才新建的文件夹OpenCVProject。点击“Configure”按钮,在出现的对话框中选择Visual Studio 11 2012 Win64, 默认Use default native compilers, 点Finish。如图所示,说明有错误….



再次点击“Configure”按钮,就是下图的样子(如果还是有错误,继续点击Configure,直到没有红色标记)



此时已经没有错误,点“Generate”生成工程,退出CMake。

3、进入OpenCVProjiect(D:\Program Files (x86)\OpenCVProject),找到“OpenCV.sln”,双击打开。选择CMakeTargets下 INSTALL,右键选择“生成”,生成Debug版dll,lib。



然后切换编译模式为Release模式,依然在INSTALL右键选择“生成”,生成Release版dll,lib。



4、在VS2012中配置编译好的OpenCV库。首先配置环境变量。找到环境变量设置,在用户变量中找到PATH变量(没有则新建),在变量值那添加 D:\Program Files (x86)\OpenCVProject\install\x64\vc11\bin



打开VS2012,新建win32控制台程序Test,在 项目->属性->VC++目录->包含目录,添加 D:\Program Files (x86)\OpenCVProject\install\include, 在“库目录”中添加D:\Program Files (x86)\OpenCVProject\install\x64\vc11\lib



然后在 项目->属性->链接器->输入->附加依赖项,添加以下lib文件

opencv_calib3d2411d.lib

opencv_contrib2411d.lib

opencv_core2411d.lib

opencv_features2d2411d.lib

opencv_flann2411d.lib

opencv_gpu2411d.lib

opencv_highgui2411d.lib

opencv_imgproc2411d.lib

opencv_legacy2411d.lib

opencv_ml2411d.lib

opencv_nonfree2411d.lib

opencv_objdetect2411d.lib

opencv_photo2411d.lib

opencv_stitching2411d.lib

opencv_ts2411d.lib

opencv_video2411d.lib

opencv_videostab2411d.lib

然后将配置切换到Release



在“附加依赖项”添加以下lib文件

opencv_calib3d2411.lib

opencv_contrib2411.lib

opencv_core2411.lib

opencv_features2d2411.lib

opencv_flann2411.lib

opencv_gpu2411.lib

opencv_highgui2411.lib

opencv_imgproc2411.lib

opencv_legacy2411.lib

opencv_ml2411.lib

opencv_nonfree2411.lib

opencv_objdetect2411.lib

opencv_photo2411.lib

opencv_stitching2411.lib

opencv_ts2411.lib

opencv_video2411.lib

opencv_videostab2411.lib

注意,因为我用的OpenCV版本为2.4.11,所以lib的后缀都为2411.lib或2411d.lib(带d表示为Debug版本),若为其它版本,则需要依版本不同而改变lib的后缀。

5、运行测试代码

#include "stdafx.h"
#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;
int main()
{
Mat img = imread("F:/PHOTOS/杂/dell.bmp");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("dell",img);
waitKey();

return 0;
}


因为我们编译的是64位的库,但是建的win32的工程,所以直接运行会出错。如下图



解决方案为进入配置管理器,如图



在活动解决方案平台那点击选择“新建”如图



点“确定”,然后重新运行工程就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vs2012 cmake opencv 64位