VS2013配置OpenCV2.4.10
这是我的第一篇博客!
由于今天配置OpenCV出现了很多问题,花费了很长时间,查了很多资料,也参考了很多博客,最终成功解决了问题,所以我也下决心把自己解决问题的过程分享出来,希望也能给别人带来帮助~
一、下载
- VS2013下载:这个大家自行下载吧。
- OpenCV官网下载:https://opencv.org
点击Releases找到2.4.10版本下载 - 将 OpenCV-2.4.10.exe 解压并放到某个目录下,例如 D:\opencv
二、配置
(1)设置环境变量:右键单击我的电脑→属性→高级系统设置→环境变量→系统变量找到Path双击→新建系统变量如D:\opencv\build\x86\vc12\bin。(该路径要根据自身情况填写)
注意:
- 关于选择x86还是x64的问题:是这样的,一开始我以为这个与计算机操作系统位数有关,查阅资料后发现不是。因为这个配置是让你在VS2013写代码的时候能够链接到OpenCV,所以是与VS2013操作的位数有关。所以你要先去VS2013看一下,怎么看呢?
打开VS2013,选择“新建项目”如果出现的是Win32控制台应用程序,则OpenCV选择x86,(实际上VS2013Debug默认为Win32),如果是Win64的话,则选择x64。
- 关于选择vc10、vc11、vc12的问题:vc10对应VS2010,vc12对应VS2013。
(2) 环境变量配好之后,就要在VS2013里配置了。
① 打开VS2013,选择“新建项目”->“Win32控制台项目”
② 注意选择空项目,为了保证使用ANSIC++特性,取消预编译头选项,单击“完成”按钮,创建项目,如图所示。
③ 点击“视图”->“其他窗口”->“属性管理器”,展开可看到两个文件夹。
④ 右键点击“Debug|Win32”,选择“添加新项目属性表(P)…”,名字自定义。
⑤ 新属性表创建之后双击,编辑该新属性表,点击左侧VC++目录,编辑右侧的包含目录表与库目录,分别添加对应的路径。对应的路径如下:
包含目录:D:\opencv\build\include。
说明:可根据自己的情况,将其分别改为opencv\build\include文件夹所在的路径
库目录:D:\opencv\build\x86\vc12\bin。
说明:可根据自己的路径情况将其改为对应的路径。
由于我已经添加过了,该图只是示例。
⑥ 单击左侧“链接器”->"输入”->“附加依赖项”,在附加依赖项里添加D:\opencv\build\x86\vc12\lib文件夹里的lib文件名称。
我给出x86\vc12\lib的文件:
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
说明:opencv\build\x86\vc12\lib里面的库文件,文件名后面有小写字母“d”的为Debug库(调试模式库),没有“d”的为Release库(发布模式库)。末尾的2410是版本号,和你lib里面的文件一致的。比如,OpenCV2.4.3的lib文件的末尾数字为243。如果版本不一样,要改正,使其一致。上面只给出了带"d"的文件是因为全部文件加上去后续可能会出问题,详细看后面一些问题的解决。
三、 一些问题的解决
模块计算机类型x64与目标计算机类型X86冲突
我一开始环境配置的时候就出现了这个问题,因为我选择的是x64而不是x86,这个问题出现的原因:在于你选择的OpenCV的位数与VS2013中Debug的位数不一致导致的。
解决:在VS2013重新新建项目步骤重来一遍。(你也可以修改VS2013默认的Debug位数,网上有教程,我试过,但是后续还会出现问题,所以重新配置一下更快。)
无法找到core2410.dll和highgui2410.dll
原因:配置不正确
解决:
1.耐心重配一次;(我就是这样的,因为在x64和x86切换的时候估计出现了dll加载不上的问题)
2.将缺少的两个dll放置在跟项目同一级上。(网上参考过来的,这个问题是解决了,但是出现了新的问题)
VS+opencv 0x00007FF8C9134008 处(位于 ConsoleApplication2.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000A64DB9F478 处。
原因:跟上文说的一样,在链接器、输入、附加依赖项那里把所有lib文件添加了进去。
解决:把文件后面没有带“d”的.lib文件去掉。因为这些文件对应的应是Release | Wiin32的配置,与Debug无关。
四、测试是否配置成功
打开“解决方案资源管理器”,在源文件右键点击“添加”->“新建项”,新建c++文件后写入如下代码:
Test01.cpp
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(){
Mat image = imread("lena.jpg"); //此处我的图片是跟Test01.cpp在同一级下,可根据想要读取图片的路径进行更改。
if (!image.data){
cout << "该图像不存在!请检查文件路径!" << endl;
}
namedWindow("My Image");
imshow("My Image", image);
waitKey(0);
return 0;
}
读取成功!