Windows环境下vs2015+opencv3.1+contrib库安装配置

由于Opencv3.0以上的版本将SIFT等算法放到contrib中,所以在此记录编译过程。
1.安装VS

学习opencv,一个顺手的集成开发环境少不了,于是采用了微软的Visual Studio,目前最新的版本是2017,但是大部分人用的是VS2015,和VS2013,这是VS2013的安装过程,VS2015也差不多,下载可以去官网。

2.下载和安装Opencv

在官网下载http://opencv.org/有各种版本,找到对应的Win版下载,因为我要使用opencv扩展库中的SIFT,SURF,所以下载了3.1(opencv3将很多不稳定的内容都放到了扩展库中)。下载完成后,打开文件,这是一个解压缩的过程,选择位置,并且不必要新建文件夹,解压缩完成后会生成一个opencv的文件夹。建议放在D盘。

Windows环境下vs2015+opencv3.1+contrib库安装配置_第1张图片

打开文件夹
Windows环境下vs2015+opencv3.1+contrib库安装配置_第2张图片

其中,build里面装的是Opencv相关的组件,sources里面是一些源代码。

3.Cmake的下载

Cmake是一个编译工具
https://cmake.org/download/安装很简单,默认安装。
Windows环境下vs2015+opencv3.1+contrib库安装配置_第3张图片
下面那个是免安装的,两个都可以。

4.下载opencv_contrib

就是扩展部分
https://github.com/Itseez/opencv_contrib
下载下来,等着用Cmake编译的时候使用。

5.用Cmake生成sln文件

Windows环境下vs2015+opencv3.1+contrib库安装配置_第4张图片

第一个框是你的opencv下sources安装的目录
第二个框是你之后生成的sln文件的保存目录
然后点击左下角的configure
Windows环境下vs2015+opencv3.1+contrib库安装配置_第5张图片

选择你对应的VS版本,需要注意的是VS2013是12,VS2015是14
这个很重要,对应的版本选不对,后面就有可能出错。
Windows环境下vs2015+opencv3.1+contrib库安装配置_第6张图片

显示configure done 第一次完成。
错误说明:

Windows环境下vs2015+opencv3.1+contrib库安装配置_第7张图片

显示正在下载这个文件,由于网络原因,常下载不了,等待半天之后,就会显示错误,类似的错误还有ippicv这个文件下载不了。
解决这个问题,可以先将这个文件下载下来。(下载地址在文末)
ffmpeg
将ffmpeg目录下的ffmpeg_version.cmake、opencv_ffmpeg.dll、opencv_ffmpeg_64.dll三个文件复制到你的OpenCV路径\opencv\sources\3rdparty\ffmpeg,
然后编辑ffmpeg.cmake,将内容修改为:

message(STATUS "FFMPEG: Package successfully downloaded")
include(${CMAKE_CURRENT_LIST_DIR}/ffmpeg_version.cmake)

ippicv
在你的OpenCV路径\opencv\sources\3rdparty\ippicv” 中创建文件夹unpack,将解压得到的ippicv_win 复制到新创建的unpack 中。
编辑downloader.cmake,将内容修改为:

set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack")
set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}")
set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)

我的ffmpeg文件夹内容

Windows环境下vs2015+opencv3.1+contrib库安装配置_第8张图片

ippicv文件夹内容

Windows环境下vs2015+opencv3.1+contrib库安装配置_第9张图片

然后,进行第二次编译

Windows环境下vs2015+opencv3.1+contrib库安装配置_第10张图片
在图中的位置添加刚才opencv_contrib,添加到modules,注意不要直接复制过来,有网友说这样有可能导致错误,尽量避免吧,然后点击configure进行第二次编译

Windows环境下vs2015+opencv3.1+contrib库安装配置_第11张图片

继续编译到所有红色变白为止

Windows环境下vs2015+opencv3.1+contrib库安装配置_第12张图片

然后点击generate

Windows环境下vs2015+opencv3.1+contrib库安装配置_第13张图片

Generating done
错误说明
(1)在进行第二次编译时,看错误说明,ocv_download会出错,这是因为错把PACKAGE写成filename.
CMake Error at D:/opencv/opencv_contrib-master/opencv_contrib-master/modules/dnn_modern/CMakeLists.txt:18 (ocv_download):
Unknown CMake command “ocv_download”.

在D:\opencv\opencv_contrib\modules\dnn_modern\CMakeLists.txt中找到ocv_download 并且把ocv_download后面的filename换成PACKAGE
在D:\opencv\opencv_contrib\modules\xfeatures2d\cmake\download_boostdesc.cmake和D:\opencv\opencv_contrib\modules\xfeatures2d\cmake\download_vgg.cmake中
,处理方法和上面一样。(我的opencv_contrib在D盘)。

到此,安装中Cmake的一部分就结束了。

6.打开sln文件

在刚刚选择的sln文件保存目录中打开sln文件。
Windows环境下vs2015+opencv3.1+contrib库安装配置_第14张图片

Windows环境下vs2015+opencv3.1+contrib库安装配置_第15张图片

可以看到总共有151个项目,右击鼠标
Windows环境下vs2015+opencv3.1+contrib库安装配置_第16张图片

重新生成解决方案
Windows环境下vs2015+opencv3.1+contrib库安装配置_第17张图片

这是一张之前出错的的截图,我在配置的过程中这一步总是出现各种各样的问题,到最后也没解决,各种版本都安装了几次,最后偶然却通过了,这可能与opencv_contrib不稳定有关系。
出现Link1104类的错误,一般是opencv_contrib的lib中缺少相应的文件,文末的链接中有个install文件夹,里面有一些lib,可以补充一下
个别模块出错,不影像其他的使用。可以用双引号把错误中的关键字括起来,去精准搜索。

选择编译平台,我选的是debug

Windows环境下vs2015+opencv3.1+contrib库安装配置_第18张图片

接下来找到CMakeTargets中的INATALL,对INSTALL单击右键–>仅用于项目–>仅生成 INSTALL
然后在工程目录下看到
Windows环境下vs2015+opencv3.1+contrib库安装配置_第19张图片

7.配置项目环境
新建项目
Windows环境下vs2015+opencv3.1+contrib库安装配置_第20张图片

选择项目存放位置
![这里写图片描述]
(https://img-blog.csdn.net/20171124170443623?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfNDA2NjYxMzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

选择空项目

Windows环境下vs2015+opencv3.1+contrib库安装配置_第21张图片

点击解决方案资源管理器,点击源文件,添加新建项。

Windows环境下vs2015+opencv3.1+contrib库安装配置_第22张图片

属性管理器,找不到可以在视图中的其他窗口中找。
Windows环境下vs2015+opencv3.1+contrib库安装配置_第23张图片

Windows环境下vs2015+opencv3.1+contrib库安装配置_第24张图片
Windows环境下vs2015+opencv3.1+contrib库安装配置_第25张图片
包含目录中添加
D:\configure3.1\install
D:\configure3.1\install\include\opencv
D:\configure3.1\install\include\opencv2
库目录中添加
D:\configure3.1\install\x86\vc14\lib
链接器中添加

因为前面选的是debug,所以这里的是debug版本,releasev版本少个d(例如opencv_aruco310.lib )

opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib

9.进行测试

在刚才源文件,新建项中写入测试代码

using namespace cv;
int main()
{
    //载入一张图片,
	Mat srcImage = imread("1.jpg");
	//显示图片
	imshow("【载入原画】", srcImage);
	//窗口显示时间,按任意键关闭
	waitKey();
}

Windows环境下vs2015+opencv3.1+contrib库安装配置_第26张图片

一切如果正常,显示图片。
图片的位置放在(imread后面的括号内是图片的名称,注意添加格式)
Windows环境下vs2015+opencv3.1+contrib库安装配置_第27张图片

图片路径也可以是绝对路径,但注意用\\符号。

Mat srcImage = imread("D:\\picture\\1.jpg");

SIFT算法测试代码

#include 
#include   
#include 
using namespace cv;  
using namespace std;

int main()
{
    //Create SIFT class pointer
    Ptr f2d = xfeatures2d::SIFT::create();
    //读入图片
    Mat img_1 = imread("4.jpg");
    Mat img_2 = imread("5.jpg");
    //Detect the keypoints
    vector keypoints_1, keypoints_2;
    f2d->detect(img_1, keypoints_1);
    f2d->detect(img_2, keypoints_2);
    //Calculate descriptors (feature vectors)
    Mat descriptors_1, descriptors_2;
    f2d->compute(img_1, keypoints_1, descriptors_1);
    f2d->compute(img_2, keypoints_2, descriptors_2);
    //Matching descriptor vector using BFMatcher
    BFMatcher matcher;
    vector matches;
    matcher.match(descriptors_1, descriptors_2, matches);
    //绘制匹配出的关键点
    Mat img_matches;
    drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
    imshow("【match图】", img_matches);
    //等待任意按键按下
    waitKey(600000);
}

Windows环境下vs2015+opencv3.1+contrib库安装配置_第28张图片
错误说明
(1)提示指针越界,有未经处理的异常,一般这时检查图片的后缀名和路径与代码中的是否一致,不行更换路径试试。
Windows环境下vs2015+opencv3.1+contrib库安装配置_第29张图片

(2)无法启动程序
这里写图片描述
找了一张图,说明这种错误
解决这种错误把相关的dll文件(缺那个拷那个)拷贝到Windows下的,32位系统到System32,64位系统到SysWOW64中
我的目录
Windows环境下vs2015+opencv3.1+contrib库安装配置_第30张图片

其余的在
Windows环境下vs2015+opencv3.1+contrib库安装配置_第31张图片

(3)关于LINK : fatal error LNK1104: 无法打开文件“opencv_core310d.lib这样的错误
主要是因为包含的库目录中,和包含的附加依赖项不能相互对应照成的
1.工程库(lib)目录的配置“库目录中的路径是否准确。
2.链接库的配置“中“附加依赖项”的格式有没有问题,有没有多空格,版本号310是否正确。
3.环境变量的配置是否准确。

也有可能是这三个文件夹里面缺少相应lib文件造成的(可以试试,文章末尾的链接里面有我上传的相应的lib文件)
Windows环境下vs2015+opencv3.1+contrib库安装配置_第32张图片

Windows环境下vs2015+opencv3.1+contrib库安装配置_第33张图片

Windows环境下vs2015+opencv3.1+contrib库安装配置_第34张图片

(4)无法打开exe文件
一般是程序有问题,重新检查程序,图片路径。

下载链接地址:
http://download.csdn.net/download/qq_40666136/10132331
修改:
已经编译好了一个opencv3.1,contrib install文件,环境VS2017,需要可以下载,只需将Install中文件按上面步骤添加进包含目录,库目录。
[下载地址]
https://download.csdn.net/download/qq_40666136/10773454
Windows环境下vs2015+opencv3.1+contrib库安装配置_第35张图片
文件说明,install和lib文件夹是为了解决问题4,如果里面缺货,看能不能补充,其它几个对应前面的Cmake部分的错误。
有问题请留言

其它错误参考
http://blog.csdn.net/poem_qianmo/article/details/19809337

参考
http://blog.csdn.net/Cooli7wa/article/details/54143624
http://blog.csdn.net/linshuhe1/article/details/51221015#reply
http://blog.csdn.net/qsy2000/article/details/70158537

你可能感兴趣的:(opencv)