(注:参考:http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html,还有一个找不到链接了,是opencv china里的,找不到了,标题叫在vc2008 express下安装opencv2.3.1),参考这两个,结合自己的实际情况,亲自实验成功。
环境 win8(或者win7或者xp都行)+opencv +vs2010
步骤一:下载opencv,下载之后将opencv解压到某个地方,我的是解压倒d盘的(D:\Program Files\OpenCV2.3.1\opencv,),下载vs2010,并安装(微软的东西到:msdn我告诉你,这里去下就ok了,都是官方原版东西)。
步骤二:配置环境变量
win8下就是 windows键+i 点电脑信息--〉高级系统设置--〉高级--〉环境变量,在 系统变量 里与上边的 用户变量 里分别填上
Path:
32位系统 & VC2010添加的环境变量为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\bin(这里如果你的opencv解压到其他盘,只把根目录换一下就行,如果解压到f盘里,根目录为F:\opencv,则环境变量为:F:\opencv\build\x86\vc10\bin,以下的相应修改即可)。
64位系统 & VC2010添加的环境变量为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\bin
(这里我看有些人添加的是比较复杂,如果path里只添加上边那一个不行的话,那就多添加几个(就是在path环境变量里将TBB的环境变量,还有跟路径加上了),中间用 英语的分号“;”隔开,
32位系统 & VC2010添加的环境变量为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\bin;D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc10;D:\Program Files\OpenCV2.3.1\opencv
64位系统 & VC2010添加的环境变量为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\bin;D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc10;D:\Program Files\OpenCV2.3.1\opencv
)
TBB:
32位系统 & VC2010:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc10
64位系统 & VC2010:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc10
步骤三:打开vs2010,建立工程测试()
1)、文件->新建->项目->Visual C++->Win32 控制台应用程序(输入名称test)
2)、确定->下一步->附加选项选“空项目”->完成
3)、解决方案资源管理器->源文件(右键)->添加->新建项
4)、Visual C++->C++文件:输入名称test点添加
5)、粘贴下面的代码,保存
1 #include <opencv2\opencv.hpp>
2 #include <iostream>
3 #include <string>
4 using namespace cv;
5 using namespace std;
6 int main()
7 {
8 Mat img = imread("opencv.jpg");
9 if(img.empty())
10 {
11 cout<<"error";
12 return -1;
13 }
14 imshow("xx的图片",img);
15 waitKey();
16
17 return 0;
18 }
6)、把自己想要显示的图片改名为opencv.jpg,然后放到工程项目的test文件夹里面(是里面那个test文件夹)
第四步:配置工程的opencv依赖,(项目(菜单项)->…属性->VC++目录:需要配置“包含目录”和“库目录”两项。)
1.配置 包含目录
也即告诉VC去什么地方寻找OpenCV的头文件,打开VC,选择菜单“工具”->“选项”->“项目和解决方案”->“VC++目录”->“包含文件”,包含 D:\Program Files\OpenCV2.3.1\opencv\build\include;D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv;D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv2
2.配置 库目录
也即告诉VC去什么地方寻找OpenCV的库文件。
32位系统 & VC2010,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\lib
64位系统 & VC2010,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\lib
3.配置连接器:项目(菜单项)->…属性->连接器->输入->附加依赖项
在[链接器 LINKER]的[输入INPUT]中,为项目的Debug配置增加 [附加依赖项 Additional Dependencies]:
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
(可根据实际需要删减)注意,请打开了新编辑窗口(即点击了“...”按钮)“附加依赖项”,并一条一条分别加入,一条一行(一个回车),(注意行末不要加";")否则会出现类似以下错误:1>LINK : fatal error LNK1104: 无法打开文件“…….lib”
(如果下载的OpenCV不是2.3.1版本,请将"XXX231d.lib"中的"231"更改为对应的版本号,例如:下载OpenCV 2.4.0,则统一改为"XXX240d.lib",否则会出现类似以下错误:1>LINK : fatal error LNK1104: 无法打开文件“XXX.lib”)
为项目的Release配置增加[附加依赖项 Additional Dependencies]:
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
(可根据实际需要删减)*
到这里,执行。测试看看能执行出来吗
32位的机器应该没什么问题了,但是对于64位机器这时候执行的时候,会报错
fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
对于这个问题,(下边内容只64位看就可以了,32位的可以忽略了。)
win8 下,安装的VS2010,然后搭配opencv2.4.4运行,报错为:fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突 。通过网上查询,给错的答案大同小异,但是依然有很多朋友按照网上的答案无法解决这个问题,以下是我的解决方案
1、原因:win8下的64位系统,在运行程序的时候,需要的DLL必须是64位系统编译的,VS2008也必须在安装的时候,选择了64位编译的支持。如果安装的时候,已经选择了,那么出现该问题的解决办法,安装网上常规的思路即可。既:
(1)右键项目名,点击属性,弹出项目属性页,找到链接器----高级,修改右侧的目标计算机,选择有X64的那个选项。
(2)右键项目名,选择清理解决方案,清理完之后选择X64平台编译器,然后重新生成解决方案,便可以调试成功。
注:按照网上搜到的方法执行完以上步骤后,我的程序仍然报错,只是X86和X64的位置换了一下。。汗死。。于是折腾出一下步骤:
2、如果此时问题依然没有解决,则可能是系统包含的DLL文件是win32下编译的,则,需要把DLL换成64位系统编译的。比如opencv2.3.1,之前编译的就是win32下编译的,则需要重新编译,具体步骤如下:
(1)、右键 解决方案->属性,将平台选为X64,若无此选项,则点击配置管理器,选择X64平台,若无则新建一个X64平台并选中。
(2)、接着,打开OpenCV.sln,右键清理,重新生成,注意配置管理器里面选择x64平台,不然编译出来的还是不能使用。
(3)、编译完成之后,配置DLL和Lib的路径后,就不会再出以上的错误了。
ok了。。。