vs2012+opencv2.4.8下安装过程及问题处理



OpenCV文件夹的准备

官网下载最新OpenCV的Windows安装程序(其实是一个自解压包),200+MB的体积,双击解压缩到某个分区(如果是SSD的话建议先解压到某个移动硬盘上),并不是所有文件都是需要的。对于64位Windows系统只需要build文件夹下的以下文件:

buildfiles

如果是64位Windows系统和64位Visual Studio则需要x64文件夹而不是x86文件夹。而且,x86/x64文件夹下,只需要vc11这个文件夹,不需要vc10(vc11对应VS2012,vc10对应VS2010)。

设置环境变量

打开管理员模式的命令提示符,运行:

1
setx -m OPENCV_DIR D:\openCV_build\x86\vc11

-m参数表示该环境变量属于系统范围而非用户范围的值,稍等片刻待提示值已保存后可以关闭cmd了。然后打开计算机属性->高级系统设置->设置环境变量。

在系统变量里找到Path,双击修改,在末尾添加OpenCV的bin(记住要用半角分号隔开),

%OPENCV_DIR%\bin

如下图所示。使用%OPENCV_DIR%变量的好处是万一下次要变动OpenCV(比如安装了两个版本的OpenCV或者改变了路径),只需要修改%OPENCV_DIR%这个变量即可。

system_variable

Visual Studio的配置

以Visual Studio 2012和官方指南的Local Method(本地方法)为例,修改某一个工程的属性,添加依赖。(VS2012的项目下的VC++目录功能被否决,无法再用全局方法修改了)

右键单击项目->属性,把弹出窗口左上角的配置更改为“所有配置”,选择配置属性->VC++目录,更改右边的包含目录,编辑,新加一行:

1
$(OPENCV_DIR)\..\..\include

类似地,更改库目录,新加一行:

1
$(OPENCV_DIR)\lib

如下图所示。

vs_settings_inc_lib

现在修改Debug配置的属性表,在链接器->输入下,修改附加依赖项。这里应该包含所有你需要的OpenCV模块,模块的名称规则是opencv_<module_name><version_number>d.lib,全部模块如下(OpenCV 2.4.8):

1
2
3
4
5
6
7
8
9
10
11
opencv_core248d.lib
opencv_imgproc248d.lib
opencv_highgui248d.lib
opencv_ml248d.lib
opencv_video248d.lib
opencv_features2d248d.lib
opencv_calib3d248d.lib
opencv_objdetect248d.lib
opencv_contrib248d.lib
opencv_legacy248d.lib
opencv_flann248d.lib

然后在Release的配置下再来一次,这一次不要版本号后面的d(d表示debug),完整的模块列表如下:

1
2
3
4
5
6
7
8
9
10
11
opencv_core248.lib
opencv_imgproc248.lib
opencv_highgui248.lib
opencv_ml248.lib
opencv_video248.lib
opencv_features2d248.lib
opencv_calib3d248.lib
opencv_objdetect248.lib
opencv_contrib248.lib
opencv_legacy248.lib
opencv_flann248.lib

编译测试工程

一份简单的测试源码(修改自MrKnight的demo)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main( int argc, char **argv)
{
     if (argc<2)
     {
         cout<< "No parameters.\n"
             << "You need to specify an image." <<endl;
         exit (1);
     }
     else
     {
         Mat img = imread(argv[1]);
 
         if (img.empty())
         {
             fprintf (stderr, "Error: load image failed." );
             return -1;
         }
         namedWindow( "image" , CV_WINDOW_AUTOSIZE);
         imshow( "image" , img);
         waitKey();
     }
     return 0;
}

编译完成后,需要在命令行下运行,图片的路径作为参数传递给程序。看看能否顺利编译成功,并看到图片吧。测试运行如下图所示:

opencv-succ



VS2012:模块计算机类型“x64”与目标计算机类型“X86”冲突    

在使用Visual Studio 2012编译运行OpenCV的时候,出现错误“fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突 ”。简单的说原因就是我们加载的是64位的opencv的库,但是visual是使用X86的平台进行编译的所以有冲突。解决方法为:

1、右键项目-->属性-->链接器-->高级-->目标计算机(在右边的窗口),将此处改为MachineX64 (/MACHINE:X64)。

2、点击右上角的“配置管理器”-->活动平台解决方案-->下拉-->新建-->在下拉框里面选择X64,再点击确定如下图,

visual studio选择64位平台

现在重新执行代码就不会再出现上面的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值