各位技术大牛们,大家好,这是笔者的第一篇技术博客,因为最近码代码遇到很多之前遇到的问题但是又回忆不起来所以决定用博客记录自己的问题方便自己,也方便大家嘛。最近在学opencv,所以在配置环境·的时候也遇到很多奇葩的问题,所以在此分享给大家。
首先我的本本是win7 64位操作系统,用的是vs2012,配置Opencv2.4.9,首先要说的是如果你下载的是Opencv3.0.0 那么可能是配置不成功的,因为最新的3.0.0的文件是不齐全的,所以最好还是使用2.4.x版本的。好,下面讲解配置的步骤以及配置过程中会遇到的问题还有注意事项。
一、下载opencv2.4.9(https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download)
下载后解压,注意要记住解压的路径,笔者解压的路径是D:\Program Files;然后就是要配置我们的环境啦!
二、配置环境
首先,在我的电脑上右键>属性>高级系统设置>环境变量,相信使用过java的朋友很熟悉;
配置环境变量:(vs2012对应的opencv目录是VC11)
1、系统变量 Path:添加D:\Program Files\opencv\build\x86\vc11\bin;D:\Program Files\opencv\build\x64\vc11\bin(添加两个是因为不知道你的系统是32位还是64位)
2、用户变量:添加opencv变量,值D:\Program Files\opencv\build,添加PATH变量(有就不需要添加,但是值需要添加)值D:\Program Files\opencv\build\x86\vc11\bin;
D:\Program Files\opencv\build\x64\vc11\bin;如图:
三、新建项目调试
1.新建一个空的win32项目
接下来是要为项目引入适合的目录;这里笔者是着重强调64位系统的解决方案,32位的情况读者可以自行在网上找,一般都有的;好,首先在vs新建的空项目上找到视图工具栏,点击找到属性管理器,此时64位的机子是不能用debug 32运行的否则会在编译的时候报错
那我们该怎么解决这个问题呢,其实笔者一开始也是搞了一晚上,最后在高人指点下还是成功了。接下来就是解决方案。首先找到,点配置管理器,如图4点击新建,在键入新平台上输入x64,点击确定,然后会发现最左边的解决方案多了debug 64,这就是笔者想要的,在debug | x64上右键添加新项目属性表然后单击就会出现
1、包含目录:(VC++目录)
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2
2、库目录:(VC++目录)D:\Program Files\opencv\build\x64\vc11\lib
3、连接器->输入->附加依赖项:
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
其实以上都是D:\Program Files\opencv\build\x64\vc11\lib下所有的lib文件,做好这些以后记得点应用,还有,记得右键属性表点击保存,不然刚才的操作的不成功的!
接下里就是调试我们的环境有没有成功的时候啦,新建一个新cpp文件然后黏贴上下面这段代码,#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("C:\\Users\\Administrator\\Desktop\\3.jpg");
// 创建一个名为 "游戏原画"窗口
cvNamedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画",img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
这里注意imread()这个函数加载的图片地址只能绝对路径,相对路径会爆出内存问题,我们点击调试,然后笔者是可以编译成功的。
The End:
笔者在这里已经尽可能详细的解决方案写出来分享,大家如果还有疑问可以评论留言,笔者一定尽可能回复大家,谢谢!