最近由于学校里一些工作的需要,开始接触opencv,学习期间遇到了不少的问题,还好最后都一一解决了,应该有不少初学者也会有同样的问题,下面就来说一下opencv3.2的一些配置和使用问题。opencv3比较新,学习的书籍不算多,我个人学习期间参考了《OpenCV3编程入门》毛星云 一书,写得很详细,也推荐给大家。
先说一下我使用的配置环境:
1.vs2015
2.opencv-3.2.0-vc14
3.cmake3.8.0 (编译x86的opencv需要)
一.下载安装vs2015和cmake
vs2015下载:https://msdn.microsoft.com/zh-cn/visual-studio-community-vs.aspx
vs2017下载:www.visualstudio.com/
下载和安装需要一些时间,也可以从网上找离线版本的安装包,安装过程网上能找到很多,这里不再赘述。
cmake下载:http://www.cmake.org/,进入之后点右上角的Download,下载相应的版本并安装,我选择的是win64的安装版:
二.下载和安装opencv3.2.0
1.进入opencv下载页面,https://sourceforge.net/projects/opencvlibrary/files/opencv-win/,点3.2.0,如图:
2.之后点opencv-3.2.0-vc14.exe,vc14对应的是vs2015,如下:
3.下载完成后打开,选择目录安装,它会在你选择的目录解压出一个opencv 文件夹,比如我选的路径是C:\opencv,记住这个路径,下载安装这一步就完成了。
三.开发环境的搭建
安装目录视具体情况不同,以安装在C:\opencv为例
1.添加环境变量:
在桌面对此电脑右键-属性-高级系统设置-环境变量,在下面 系统变量 里找到Path,添加路径 C:\opencv\build\x64\vc14\bin;
然后确定,关闭,如图:
2.配置VS2015:
打开vs2015,点新建项目-Win32控制台应用,确定,勾选空项目,完成,如下:
之后在 解决方案资源管理器 里 右键点 源文件,添加-新建项,确定:
然后点菜单里 视图-属性管理器,展开项目目录看到如下文件夹,双击点开Debug | x64下的Microsoft.Cpp.x64.user:
点左侧的 VC++目录 改变以下几项
1.在 可热行文件目录下加上 C:\opencv\build\x64\vc14\bin;
2.在 包含目录 加上三个路径 C:\opencv\build\include\opencv2;C:\opencv\build\include\opencv;C:\opencv\build\include;
3.在 库目录 加上路径 C:\opencv\build\x64\vc14\lib;
如下图:
完成后点左侧的 链接器-输入,
在 附加依赖项 加上 opencv_world320d.lib;opencv_world320.lib;
其中的320表示版本是opencv3.2.0,后面的d表示debug版本,没有d表示release版本的,如下图:
关闭该页,对 Release | x64 的 Microsoft.Cpp.x64.user做上述同样的修改,关闭。
opencv3.2.0解压文件build中没有x86,所以这里先配置x64,有需要的话看后面的x86编译和配置步骤。
测试一下,先点工具栏x86下拉框,点配置管理器,如图:
项目平台选x64(选成win32运行的话就会提示缺少*.dll文件),活动解决方案配置和活动解决方案平台选Debug,x86(前面如果没有错的话,这两项选哪个都可以运行,配置完之后要把这两项换成Releaze和x64分别测试一下),如下:
3.关闭,粘贴下面的官方示例代码试试:
#include <opencv2/core/utility.hpp>
#include <iostream>
const char* keys =
{
"{ b build | | print complete build info }"
"{ h help | | print this help }"
};
int main(int argc, const char* argv[])
{
cv::CommandLineParser parser(argc, argv, keys);
if (parser.has("help"))
{
parser.printMessage();
}
else if (!parser.check())
{
parser.printErrors();
}
else if (parser.has("build"))
{
std::cout << cv::getBuildInformation() << std::endl;
}
else
{
std::cout << "Welcome to OpenCV " << CV_VERSION << std::endl;
}
return 0;
}
运行效果如下:
然后把工具栏的Debug 和x86分别换成Releaze,x64试试,上面都配置好的话都可以运行。
---------------------------------------------------------------------------------------------分割线----------------------------------------------------------------------------------------------------------
到这里x64版本的已经配置完成,如果想要x86版的继续看下面。如果你不想麻烦并且和我的环境一样的话,可以跳过 四和五,到最后下载我编译好的x86库文件放到和x64同 级目录里(如C:\opencv\build\),配置和上面x64只有 附加依赖项不一样
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四.用cmake生成opencv解决方案
1.打开cmake-gui(如果桌面没有就在开始菜单里找),点Browse Source 按钮,选择opencv安装文件夹下source的路径,我选的C:/opencv/sources,点Browse Build按钮,选择生成解决方案的路径 ,我选的C:/files,注意这两个路径不要有中文,如图:
2.点左下角的Configure按钮,选定Use default native compilers,再选择VS版本,我的是VS2015,那就选visual studio 14 2015:
3.点Finsh,稍等一会,出现下面的Configuring done页面:
4.再点Configure,等一会出现下面的页面:
5.再点Generate,如图:
6.Generate完成后会有Generating done 字样,如图:
五.用vs2015编译opencv3.2
1.到这里已经用cmake生成了VS2015的解决方案,关闭cmake,打开上面你所选择的Build文件夹,比如我的是C:/files,可以找到一个OpenCV.sln解决方案,打开这个文件:
2.打开之后,工具栏里的Debug改成Releaze,不要改其他选项,点生成-生成解决方案,等几分钟:
3.生成完成之后,结果显示成功57个,失败0个,跳过7个,这个我不知道原因,不去理会
4.打开左侧 解决方案资源管理器,找到CMakeTargets-INSTALL:右键,选 仅用于项目-仅生成INSTALL
5.对INSTALL右键,选 仅用于项目-仅生成INSTALL ,完成之后可以关闭VS2015,在build生成目录 (如上述C:\files)下找到install文件夹,里面有个x86文件夹(其他的都可以删了)这就是我们编译好的的x86版的库,:
6.把这个x86文件夹复制或移动到opencv 安装目录/build/ 下,如图:
六.VS2015配置
之后就是配置过程,和x64的配置差不多(1添加环境变量path ,2修改配置管理器的win32debug和win32releaze属性页,可执行文件目录C:\opencv\build\x86\vc14\bin;,包含目录三个和x64一样 C:\opencv\build\include;C:\opencv\build\include\opencv;C:\opencv\build\include\opencv2;,库目录C:\opencv\build\x86\vc14\lib;),除了一点不一样的是,附加依赖项添加如下:
opencv_calib3d320d.lib;
opencv_core320d.lib;
opencv_features2d320d.lib;
opencv_flann320d.lib;
opencv_highgui320d.lib;
opencv_imgcodecs320d.lib;
opencv_imgproc320d.lib;
opencv_ml320d.lib;
opencv_objdetect320d.lib;
opencv_photo320d.lib;
opencv_shape320d.lib;
opencv_stitching320d.lib;
opencv_superres320d.lib;
opencv_video320d.lib;
opencv_videoio320d.lib;
opencv_videostab320d.lib;
opencv_calib3d320.lib;
opencv_core320.lib;
opencv_features2d320.lib;
opencv_flann320.lib;
opencv_highgui320.lib;
opencv_imgcodecs320.lib;
opencv_imgproc320.lib;
opencv_ml320.lib;
opencv_objdetect320.lib;
opencv_photo320.lib;
opencv_shape320.lib;
opencv_stitching320.lib;
opencv_superres320.lib;
opencv_video320.lib;
opencv_videoio320.lib;
opencv_videostab320.lib;如图:
七.完成
点生成-配置管理器 把项目平台改成Win32,粘贴上上面的代码编译运行试一下,配置没有问题的话都可以运行
我也是初学编程,有很多不对的地方希望大家批评指正,最后祝大家学习进步!
opencv3.2.0 的x86版库文件百度云盘:http://pan.baidu.com/s/1i432EhB