本来OpenCV环境配置的问题是个基础问题,但是步骤有点小烦,所以几乎每次都要百度一下,加上这次遇到的“fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突”的问题的解决,所幸写一篇博客,以后还要配置环境,自己可以直接看。
首先来说OpenCV环境配置问题:
第一步:给OpenCV压缩包解压到一个磁盘中,任何磁盘都可以,我选择解压在C盘。
第二步:环境变量的配置,计算机—属性—高级系统设置—环境变量
第三步:在系统变量当中找到Path,并且在path双击path,开启编辑模式。在path当中添加OpenCV的相关路径,根据文件解压的位置做出相应的更改,比如我的就是:
C:\opencv\build\x86\vc11\bin C:\opencv\build\x64\vc11\bin 因为有时候会用到x64位编译器,所以两个都添加上。
第四步:打开VS2012新建一个工程,然后找到属性管理器,点击Debug栏目,右键添加新项目属性表,并且进行相关命名,因为以后会反复用到这个东西,所以名字要特别一点。
第五步:双击新建的属性表,添加相应的目录。
通用属性— VC++目录 — 包含目录: (根据解压文件的位置)例如我的分别是:
C:\opencv\build\include
C:\opencv\build\include\opencv
C:\opencv\build\include\opencv2
然后是 库目录 也是根据解压位置添加的:
C:\opencv\build\x86\vc11\lib
第六步: 添加附加依赖项:连接器——输入——添加附加依赖项 ,然后将下面文件名放进去。
opencv_core2411d.lib
opencv_imgproc2411d.lib
opencv_highgui2411d.lib
opencv_ml2411d.lib
opencv_video2411d.lib
opencv_features2d2411d.lib
opencv_calib3d2411d.lib
opencv_objdetect2411d.lib
opencv_contrib2411d.lib
opencv_legacy2411d.lib
opencv_flann2411d.lib
好了,至此OpenCV环境已经配好了,可以用下面的代码跑一下试试有没有成功:
#include<opencv2\core\core.hpp> #include<opencv2\opencv.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv2\highgui\highgui.hpp> using namespace std; using namespace cv; int main(){ Mat img=imread("F:/2.jpg"); //图片路径 if(img.empty()){ return -1; } imshow("hehe",img); waitKey(0); return 0; }
Release模式和Debug模式差不多,只不过在添加附加依赖项的时候,将附件依赖项的文件名后面的“d”给去掉。
现在我们再讨论一下fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突问题的解决:即我们需要再64位环境下编译运行,但是出现这个问题。
首先要确保这两个地方没有问题:
1:项目解决方案——属性——连接器——高级——目标计算机,看目标计算机是否是MachineX64,不是的话更改为。
2:配置管理器——新建(有的话直接选择)x64
这两个搞定之后,试一试能不能跑,不能跑的话,我们回到刚刚设置建立的OpenCV属性表当中,注意是修改DebugX64位下面的属性表,将我们的库目录的路径更改一下,
将原来的 C:\opencv\build\x86\vc11\lib 改为 C:\opencv\build\x64\vc11\lib,这样基本就没问题。Relaese方面一样。
========================更新一下===============================================================
OpenCV 3 +VS2017 一个小问题:由于找不到opencv_world331d.dll,程度无法应用。
解决:将opencv_world331d.dll 拷贝到Windows/System32里面。