opencv4.0.0+cmake编译(含contrib)

前言

笔者环境:win10+vs2015+cmake3.8.2

介绍下4.0.0的新特性,沿用官网的说明:

在发布3.0版的近3.5年后,我们很高兴推出4.x系列的第一个稳定版本

版本特性:

  • OpenCV现在是C ++ 11库,需要兼容C++ 11标准的编译器。所需的最低CMake版本已提升至3.5.1。
  • 很多OpenCV 1.x的C API已被删除
  • 在核心模块中延续性(在XML,YAML或JSON中存储和加载结构化数据)已在C ++中完全重新实现,并且也去掉了C API。
  • 添加了新的模块G-API,它可以作为非常高效的基于图形的图像处理流水线的引擎。
  • dnn模块使用OpenVINO™工具包R4中的深度学习部署工具包(Deep Learning Deployment Toolkit)进行了更新。请参阅指南如何构建和使用支持DLDT的OpenCV。
  • dnn模块现在包括实验性Vulkan后端,并支持ONNX格式的网络。
  • 流行的Kinect Fusion算法已实现,并针对CPU和GPU(OpenCL)进行了优化
  • QR图码检测器和解码器已添加到objdetect模块中
  • 非常高效且高质量的DIS密集光流算法已从opencv_contrib转移到视频模块。
  • 更多细节可以在之前的宣布中找到:4.0-alpha,4.0-beta,4.0-rc和更新日志

1、下载

在opencv的官网或者opencv的github上都可以下载,笔者在GitHub上下载。

打开opencv的GitHub,如下:

 分别点进去,下载相对应的release版本。

 

 下载完解压得到,下面开始编译(玩cv自己不会编译是不行的):

 2、cmake编译

 在opencv目录下,新建一个文件夹newbuild,接下来编译的结果将存放在这个目录下。

(1)cmake配置与生成

 

 等待一段时间,

 接下来添加contrib的module,点击generate

 

 等待一段时间,generate done,所有的红色就会没有,否则只能重新生成了。

 (2)vs编译生成install

打开newbuild下的的OpenCV.sln文件,

 找到CmakeTargets下的install,右击 点击 生成,前面所有的步骤都是为了这一步,临门一脚啊。。。

 

 生成大概15-20分钟左右,

。。。。。。

全部快成功了,居然有6个不通过,难受啊,秉着不抛弃不放弃的思想,重新来过吧。

但是重新来过还是有6个不通过,查了资料博客半天,有人说不影响使用,好吧,继续吧,我在这重复之前的步骤4遍,心塞ing。

(3)重新配置opencv,环境变量/依赖项等等

这里就驾轻就熟了,和以前的版本一样,

添加环境变量到path

 然后打开vs2015,打开属性管理器,

 

 点击Debug x64下的第一个,打开属性

 包含目录为:install\include和install\include\opencv2,install是刚才上面生成的

 

 然后是链接器下 输入 

lib文件带d的是debug模式下的,没有就是release模式,笔者这里是debug模式下的,release没有编译,如过需要,和前面的步骤差不多。

附加的依赖项有点多(就是把D:\opencv4.0\opencv\buildx64\install\x64\vc14\lib 目录下的所有lib文件添加),这是我编译出来的

opencv_aruco400d.lib
opencv_bgsegm400d.lib
opencv_bioinspired400d.lib
opencv_calib3d400d.lib
opencv_ccalib400d.lib
opencv_core400d.lib
opencv_datasets400d.lib
opencv_dnn_objdetect400d.lib
opencv_dnn400d.lib
opencv_dpm400d.lib
opencv_face400d.lib
opencv_features2d400d.lib
opencv_flann400d.lib
opencv_fuzzy400d.lib
opencv_hfs400d.lib
opencv_highgui400d.lib
opencv_img_hash400d.lib
opencv_imgcodecs400d.lib
opencv_imgproc400d.lib
opencv_line_descriptor400d.lib
opencv_ml400d.lib
opencv_objdetect400d.lib
opencv_optflow400d.lib
opencv_phase_unwrapping400d.lib
opencv_photo400d.lib
opencv_plot400d.lib
opencv_reg400d.lib
opencv_rgbd400d.lib
opencv_saliency400d.lib
opencv_shape400d.lib
opencv_stereo400d.lib
opencv_stitching400d.lib
opencv_structured_light400d.lib
opencv_superres400d.lib
opencv_surface_matching400d.lib
opencv_text400d.lib
opencv_tracking400d.lib
opencv_video400d.lib
opencv_videoio400d.lib
opencv_videostab400d.lib
opencv_xfeatures2d400d.lib
opencv_ximgproc400d.lib
opencv_xobjdetect400d.lib
opencv_xphoto400d.lib

 然后确定就行了。

(4)测试

新建工程-添加源文件-简单代码(sift特征检测)

代码如下:

#include <iostream>
#include <vector>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;
using namespace std;

int main()

{
	Mat src = imread("F:/vs_test/lena.jpg");

	if (src.data == NULL)
	{
		cout << "No exist" << endl;
		return -1;
	}
	namedWindow("input image", WINDOW_AUTOSIZE);
	namedWindow("output image", WINDOW_AUTOSIZE);
	imshow("input image", src);
	Ptr<Feature2D> sift = xfeatures2d::SIFT::create(400); //括号参数越大越精确,自定
	vector <KeyPoint> keypointsa;
	Mat a;

	sift->detectAndCompute(src, noArray(), keypointsa, a); //得到特征点和特征点描述
	drawKeypoints(src, keypointsa, src);//画出特征点

	//显示
	imshow("output image", src);

	waitKey();
	return 0;
}

结果:

     

结语:

从上面的结果看,确实没有影响,不过看到生成报告有几个失败难免不舒服,具体原因也不清楚,应该是网络的问题,版本的问题笔者觉得不是,笔者很认真的检查过,甚至还重新下了一遍。算了,不想了,心累。。。

基本大功告成,该去歇一歇了

不行,还是继续折腾吧,时间紧,任务重!!!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: OpenCV是一款开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法,可以帮助开发者实现各种视觉任务。CMake是一个跨平台的构建工具,可以帮助开发者在不同的操作系统上进行项目的构建和管理。Eigen是一个C++模板库,提供了高级的矩阵和向量运算功能,适用于各种数学计算和线性代数操作。 在使用OpenCV进行开发时,我们可以使用CMake进行项目的构建。CMake可以根据不同操作系统的情况生成相应的构建文件,方便开发者在不同系统上进行开发和部署。在构建OpenCV项目时,我们可以使用CMakeFile.txt文件来描述项目的结构和依赖关系,然后通过CMake生成对应的构建文件。 而Eigen可以与OpenCV一起使用,为OpenCV提供更强大的数学计算能力。Eigen提供了高性能的矩阵和向量操作,可以进行矩阵运算、特征值计算、线性代数等数学计算。通过集成Eigen,我们可以在OpenCV项目中更方便地处理各种数学计算任务。 在使用OpenCV和Eigen时,可以选择使用Visual Studio 2017进行开发。Visual Studio 2017是一款强大的集成开发环境,提供了丰富的开发工具和调试能力。通过Visual Studio 2017,我们可以方便地进行OpenCV和Eigen项目的编写、构建和调试,提高开发效率。 综上所述,OpenCVCMake、Eigen和Visual Studio 2017可以相互配合使用,实现图像处理和计算机视觉相关的项目开发。通过使用CMake进行项目构建,集成Eigen库进行数学计算,使用Visual Studio 2017进行开发,可以提高开发效率,快速实现各种视觉任务。 ### 回答2: OpenCV 是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。CMake 是一个跨平台的构建工具,用于生成编译项目所需的 Makefile 或者 Visual Studio 的解决方案文件。Eigen 是一个 C++ 模板库,提供了线性代数的相关功能。 在使用 OpenCV 进行开发时,我们可以使用 CMake 来配置和生成项目,以便在不同的开发环境中进行编译和构建。CMake 可以自动检测并配置 Opencv 的相关路径,以便正确地链接和使用库文件。 而 Eigen 则是一个非常常用的线性代数库,它提供了矩阵、向量和矢量等数学对象的定义和操作。在使用 OpenCV 进行图像处理时,我们经常需要使用到矩阵操作,而 Eigen 提供了更高效和方便的矩阵运算,可以更好地满足我们的需求。 对于在 Visual Studio 2017 上使用 OpenCVCMake 和 Eigen 进行开发,我们首先需要确保已经正确安装并配置了这些工具。然后,我们可以使用 CMake 来生成一个 Visual Studio 的解决方案,其中将包我们要开发的项目以及所需的库文件链接。 在 CMake 中,我们需要添加相应的路径信息,以便 CMake 可以找到 OpenCV 和 Eigen 的安装路径。然后将这些路径信息与我们的项目相关内容一起配置,并生成 Visual Studio 的解决方案。 在 Visual Studio 2017 中,我们可以打开生成的解决方案,并进行编写和调试我们的代码。可以使用 OpenCVCMake 和 Eigen 的相关函数和类,进行图像处理、线性代数计算等任务。 总之,使用 OpenCVCMake 和 Eigen 进行 Visual Studio 2017 上的开发,可以方便地进行图像处理和计算机视觉算法的开发,以及进行高效的线性代数计算。 ### 回答3: OpenCV是一个流行的计算机视觉库,用于处理图像和视频。依靠cmake进行项目构建。Eigen是一个C ++模板库,提供了用于线性代数运算的高性能数学工具。现在我来回答关于OpenCVCMake和Eigen在VS2017中的问题。 首先,你需要确保已经在你的计算机上安装了Visual Studio 2017和CMake。在安装完成后,你可以开始设置OpenCVCMake和Eigen。 首先,你需要下载并安装OpenCV库。你可以从OpenCV官方网站下载最新版本的OpenCV,并按照官方文档提供的说明进行安装。在安装完成后,你需要设置OpenCV的环境变量,以便在VS2017中使用OpenCV。 接下来,你可以使用CMake来构建你的OpenCV项目。在CMake中,你需要指定OpenCV的安装路径,并设置你的工程文件路径。你可以使用CMake的GUI界面或命令行界面来完成这一步骤。 然后,你需要下载并安装Eigen库。你可以从Eigen官方网站下载最新版本的Eigen,并按照官方文档提供的说明进行安装。 在设置完OpenCV和Eigen后,你可以在VS2017中创建一个新的项目。你需要在项目配置中链接OpenCV和Eigen库,并将必要的头文件包到你的代码中。你可以在项目属性中进行这些配置。 最后,你可以在你的代码中使用OpenCVCMake和Eigen来进行图像和视频处理、线性代数运算等操作。你可以通过查看OpenCV、Eigen和CMake的官方文档来学习更多关于这些库的用法和特性。 总结来说,你需要安装OpenCV、设置CMake并安装Eigen,然后在VS2017中配置你的项目,以使用OpenCVCMake和Eigen来进行图像处理和数学运算。希望这些信息对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值