Win10+vs2015+opencv3.4.10+Ceres安装配置

      这是我很久以前写的关于配置opencv和Ceres solver第三方依赖库的教程,因此用的是比较老的vs2015,现在vs2019依旧可以适用,但vs2019也可以很方便地直接用vcpkg来配置第三方库,只需要几行命令行语句,不过对网络的要求比较高,非常容易崩,考验耐心,网络要是好的朋友用vcpkg可方便多了。

Opencv+contrib配置

首先就是安装vs2015,下载了压缩文件解压之后得到vs_community.exe;

双击安装,在安装过程中选择自定义安装,然后选择Visual C++。然后按照它的指示一步一步往下做就可以了。

安装好vs2015之后,进去opencv官网下载https://opencv.org/ 合适的opnecv的版本,同时下载相对应的合适的contrib版本https://github.com/opencv/opencv_contrib/releases.。下载完直接解压即可。解压后如图所示:

打开cmake-gui,设置source code——F:/opencv/opencv/sources(即源文件所在位置),build the binaries——F:/opencv/opencv/mybuild(放置编译文件的位置,一般都会新建一个文件夹来放置,方便管理)

点击configure,然后它会让我们选择用什么语言来编译,在这里我们就选择visual studio 14 2015来编译(根据自己电脑所装vs版本来选择),其他默认即可,然后点击右下角finish。Configure后如果显示configuring done ,第一次源码配置就完成了。可能第一次configure后全是红色的,多点几次configure就可以变成白色。

然后找到OPENCV_EXTRA_MODULES_RATH一项,添加刚刚解压后的opencv_contrib-3.4.10中的modules目录,选中之后再次点击configure,显示configuring done后点击Generate开始编译。然后之后会显示Configuring doneGenerating done

 

这时候可以打开mybuild文件夹下的CMakeDownloadLog.txt,检查所需的文件是否都下载完成(注意,安装过程必须保持联网状态)

如果是打开downloadlog文件是以上内容,那么文件下载成功。

由于所需文件要通过外网下载,通常一般是不能成功下载文件的,那么打开downloadlog文件就是以下的状态,会出现有以下这种反馈。

#try 1

# timeout on name lookup is not supported

# getaddrinfo(3) failed for raw.githubusercontent.com:443

# Couldn't resolve host 'raw.githubusercontent.com'

# Closing connection 0

我就是遇见了这种情况。早些年这个网址还没有被屏蔽,一般早些时候的教程里都没有涉及这部分,在19年20年的教程里有比较多相关的关于下载文件不成功的解决办法,但是大部分都比较缺胳膊少腿。

解决文件不能下载有三种方法,选择其一即可:

  • 最好的方法当然是通过科学上网的方式来配置opencv,不过这里有一点需要注意
  1. https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/ffmpeg_version.cmake 无法直接下载,而是直接打开了ffmpeg_version.cmake,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再该后缀为.cmake是不行的,会提示md5不匹配。
  2. 不同版本的OpenCV对应的 opencv_ffmpeg.dll 等缺失文件的 md5 签名是不一样的

 

  • 不能科学上网的可以从其他途径下载

 

网上已经有很多博主给出了这些缺失文件,只要将这些所需文件都下载下来放进相应的文件夹,所谓相应的文件夹在downloadlog文件里都有,mismatch_md5那行的第一个第一个引号就是下载文件的位置和对应的文件名,红色框即该文件对应的md5码,框框后面就是对应的网址。

三, 查找raw.githubusercontent.com真实地址,修改系统文件hosts

后来看到一个blog很好地解决了这个无法下载文件的问题,不能成功下载文件的原因是https://raw.githubusercontent.com网站访问不了。

解决方案以win10为例子

1:进入 IPAddress.com 网站查询raw.githubusercontent.com真实地址

2:打开C:\Windows\System32\drivers\etc\hosts,(需要使用管理员权限打开)

追加199.232.68.133 raw.githubusercontent.com如下:

因为hosts文件是系统文件,需要管理员权限修改,但是右键发现并没有以管理员身份打开的选项,因此,可以把hosts文件先剪切到桌面,然后用记事本打开,追加199.232.68.133 raw.githubusercontent.com,然后保存后再把hosts复制到原来的文件夹内。

经过以上操作,再回到Cmake重新configure和generate,此时的downloadlog应该是下图这种状态。

这个时候我们就可以进入下一步了。

打开mybuild文件夹,可以看见OpenCV.sln,打开之后(建议用管理员权限打开,不然可能会出错)

ALL-BUILD右键选择生成(或者重新生成),待成功后,INSTALL右键-仅用于项目-仅生成INSTALL.,生成成功之后,最后到自定义的文件夹(mybuild)确认一下,找到install文件夹,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv刚解压时的build文件夹一样):。

 

 

这一步结束后就剩下配置环境:

  1. 环境变量配置:

右键计算机-属性-高级系统设置-环境变量-系统变量-PATH-编辑,添加F:\opencv\opencv\mybuild\install\x86\vc14\bin(此处根据自己cmake生成install的路径进行修改,如果是64位的,则选择x64).

  1. 配置相关目录

随便打开一个项目或者新建一个空项目,点击视图-属性管理器,点开随便哪个项目最左边的三角号,点击Debug|Win32,鼠标移动到Microsoft.Cpp.Win32.user右键-属性

进入Microsoft.Cpp.Win32.user属性页

在通用属性- VC++目录- 包含目录中添加(根据cmake编译路径):

F:\opencv\opencv\mybuild\install\include\opencv2

F:\opencv\opencv\mybuild\install\include\opencv

F:\opencv\opencv\mybuild\install\include

  1. 添加lib目录,通用属性- VC++目录- 库目录中添加(根据cmake编译路径):

F:\opencv\opencv\mybuild\install\x86\vc14\staticlib

F:\opencv\opencv\mybuild\install\x86\vc14\lib

4、添加依赖项,在通用属性-链接器-输入-附加依赖项中添加

opencv_aruco3410d.lib

opencv_bgsegm3410d.lib

opencv_bioinspired3410d.lib

opencv_calib3d3410d.lib

opencv_ccalib3410d.lib

opencv_core3410d.lib

opencv_datasets3410d.lib

opencv_dnn_objdetect3410d.lib

opencv_dnn3410d.lib

opencv_dpm3410d.lib

opencv_face3410d.lib

opencv_features2d3410d.lib

opencv_flann3410d.lib

opencv_fuzzy3410d.lib

opencv_hfs3410d.lib

opencv_highgui3410d.lib

opencv_img_hash3410d.lib

opencv_imgcodecs3410d.lib

opencv_imgproc3410d.lib

opencv_line_descriptor3410d.lib

opencv_ml3410d.lib

opencv_objdetect3410d.lib

opencv_optflow3410d.lib

opencv_phase_unwrapping3410d.lib

opencv_photo3410d.lib

opencv_plot3410d.lib

opencv_reg3410d.lib

opencv_rgbd3410d.lib

opencv_saliency3410d.lib

opencv_shape3410d.lib

opencv_stereo3410d.lib

opencv_stitching3410d.lib

opencv_structured_light3410d.lib

opencv_superres3410d.lib

opencv_surface_matching3410d.lib

opencv_text3410d.lib

opencv_tracking3410d.lib

opencv_video3410d.lib

opencv_videoio3410d.lib

opencv_videostab3410d.lib

opencv_xfeatures2d3410d.lib

opencv_ximgproc3410d.lib

opencv_xobjdetect3410d.lib

opencv_xphoto3410d.lib

对应的每个版本的依赖项不一样,可以通过以下方法获取链接库列表win+r,输入cmd,输入以下内容

此时打开对应的路径,多了一个0.txt文件,里面存了这个文件夹里所有的链接库名字

注意:记得把0.txt删掉否则对后面有影响,而且0.txt文件里多了0.txt、OpenCVConfig.cmake、OpenCVConfig-version.cmake、OpenCVModules.cmake、OpenCVModules-debug.cmake,复制的时候记得删掉这些多余的内容。

测试

到现在为止,opencv的配置已经全部完成了,可以进行测试了,

#include <stdio.h>

#include <iostream>

#include "opencv2/opencv.hpp"

#include "opencv2/core/core.hpp"

#include "opencv2/highgui/highgui.hpp"

#include <opencv2/xfeatures2d.hpp>

 

using namespace cv;

 

using namespace std;

 

int main()

{

    Mat img_1 = imread("1.jpg", CV_LOAD_IMAGE_COLOR);

    Mat img_2 = imread("2.jpg", CV_LOAD_IMAGE_COLOR);

 

    Ptr<Feature2D> sift = xfeatures2d::SIFT::create();

 

    vector<KeyPoint> keypoints_1, keypoints_2;

    Mat descriptors_1, descriptors_2;

 

    sift->detectAndCompute(img_1, noArray(), keypoints_1, descriptors_1);

    sift->detectAndCompute(img_2, noArray(), keypoints_2, descriptors_2);

 

    //绘制特征点(关键点)

    drawKeypoints(img_1, keypoints_1, descriptors_1, Scalar(0, 0, 255));

    drawKeypoints(img_2, keypoints_2, descriptors_2, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

 

    imshow("img_1", descriptors_1);

    imshow("img_2", descriptors_2);

    waitKey(0);

 

    return 0;

 

}

 

参考:

https://www.pianshen.com/article/4494291443/

https://blog.csdn.net/star_of_science/article/details/104406819

https://blog.csdn.net/liujiquan1009/article/details/106162042

Ceres配置

https://blog.csdn.net/wzheng92/article/details/79504709

至于ceres的配置,这个博主已经讲的很清楚了,只需要按照他的步骤走就可以了

 

猜你喜欢

转载自blog.csdn.net/qq_41718859/article/details/115841149
今日推荐