OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装

一、安装环境

Windows 10 64位、VS2017

二、安装准备

  • cmake-3.14.3-win64-x64    下载地址:https://cmake.org/download/
  • VTK-8.2.0    下载地址:https://vtk.org/download/
  • opencv_contrib4.1.0    下载地址:https://github.com/opencv/opencv_contrib/releases
  • OpenCV-4.1.0    下载地址:https://github.com/opencv/opencv/tree/4.1.0

GitHub下载可能会很慢或者下载失败,我已经将各文件上传至csdn:https://download.csdn.net/download/m0_37350758/11153525

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第1张图片

三、VTK-8.2.0安装步骤

1.使用CMAKE生成可用VS2017编译的VTK的工程文件

(1)打开CMkae,点击 Browse Sourse 按钮选择下载好的VTK710源码。(本例中代码位于D:/Softwore/VTK/VTK-8.2.0

(2)手动新建一个build文件夹用来存放生成的工程。(本例中位于D:/Softwore/VTK/VTK-8.2.0/build

(3)在CMake中,点击 Browse Build 按钮,选择新建的build目录。(本例中位于D:/Softwore/VTK/VTK-8.2.0/build

然后点击 Configure按钮,弹出的编译器选择窗口,本例中选择vs2017  x64位,点击Finish开始配置工程。

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第2张图片

Configure完成之后我们需要确认下图中五项是勾选上的,没有勾选的手动勾选上。

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第3张图片

确认之后再一次configure,然后generate,然后先使用管理员权限打开VS2017,在里面打开生成的VTK解决方案!

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第4张图片

在解决方案资源管理器中右键点击ALL BUILD并点击生成进行编译。

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第5张图片

这个过程可能时间比较久(记得用管理员权限打开),可以冲杯咖啡喝喝!

编译完成之后编译完成之后右键点击INSTALL,并点击Project Only,点击Project Only INSTALL
整个过程完成之后,你已经完成了VTK820在Windows上的编译和安装(编译和INSTALL在debug和release两个模式下都要操作一遍,否则在后面编译OpenCV时可能会有错误)。

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第6张图片

 四、编译OpenCV4.1.0和OpenCV contrib源码

基本步骤类似于第三步,新启动一个CMake-gui。并建立一个build4.1.0目录。(本例位于D:\Softwore\OpenCV-4.1.0
Browse Sourse选择D:\Softwore\OpenCV-4.1.0\opencv-4.1.0
Browse Build选择D:\Softwore\OpenCV-4.1.0\build4.1.0
点击Configure按钮,弹出的编译器选择窗口,本例中选择vs2017  x64位,点击Finish开始配置工程。

配置之后需要做两处修改:

  • OPENCV_EXTRA_MOULES_PATH设置为D:/Softwore/OpenCV-4.1.0/opencv_contrib-4.1.0/modules
  • VTK_DIR目录配置为D:/Softwore/VTK/VTK-8.2.0/build

             OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第7张图片                

 再一次点击Configure按钮,针对修改项进行配置。

然后点击Generate按钮,生成Visual Studio可编译的工程。

然后先使用管理员权限打开VS2017,在里面打开生成的OpenCV解决方案。

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第8张图片

 之后操作类似于VTK编译步骤,右键点击ALL BUILD并点击build进行编译(同样时间可能会比较久),待编译完成之后,同样的,编译完成之后右键点击INSTALL,并点击Project Only,点击Project Only INSTALL编译和INSTALL在debug和release两个模式下都要操作一遍)整个过程完成之后,你已经完成了OpenCV410+OpenCV contrib410+Viz820模块在Windows上的编译和安装。

五、测试

在D:\Softwore\OpenCV-4.1.0\build4.1.0\install\include\opencv2\viz文件夹下会看到:

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第9张图片

 之后在VS2017中新建OpenCV工程,并配置开发环境:

在属性表中VC++目录下的包含目录和库目录:

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第10张图片

 

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第11张图片

 在属性表——链接器——输入——附加依赖项(添加D:\Softwore\OpenCV-4.1.0\build4.1.0\install\x64\vc15\lib文件夹下所有.lib文件):

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第12张图片

VTK和OpenCV自己带的许多.dll,需要放到PATH能够找到的地方,这里可以放在C:\Windows\SysWOW64和C:\Windows\System32中

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第13张图片

之后在vs工程中输入源码:

/**
 * @file widget_pose.cpp
 * @brief Setting pose of a widget
 * @author Ozan Cagri Tonkal
 */


#include 
#include 
#include 

using namespace cv;
using namespace std;

/**
 * @function help
 * @brief Display instructions to use this tutorial program
 */
static void help()
{
	cout
		<< "--------------------------------------------------------------------------" << endl
		<< "This program shows how to visualize a cube rotated around (1,1,1) and shifted "
		<< "using Rodrigues vector." << endl
		<< "Usage:" << endl
		<< "./widget_pose" << endl
		<< endl;
}

/**
 * @function main
 */
int main()
{
	help();

	/// Create a window
	viz::Viz3d myWindow("Coordinate Frame");

	/// Add coordinate axes
	myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());

	/// Add line to represent (1,1,1) axis
	viz::WLine axis(Point3f(-1.0f, -1.0f, -1.0f), Point3f(1.0f, 1.0f, 1.0f));
	axis.setRenderingProperty(viz::LINE_WIDTH, 4.0);
	myWindow.showWidget("Line Widget", axis);

	/// Construct a cube widget
	viz::WCube cube_widget(Point3f(0.5, 0.5, 0.0), Point3f(0.0, 0.0, -0.5), true, viz::Color::blue());
	cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0);
	myWindow.showWidget("Cube Widget", cube_widget);

	/// Rodrigues vector
	Mat rot_vec = Mat::zeros(1, 3, CV_32F);
	float translation_phase = 0.0, translation = 0.0;
	while (!myWindow.wasStopped())
	{
		/* Rotation using rodrigues */
		/// Rotate around (1,1,1)
		rot_vec.at(0, 0) += (float)CV_PI * 0.01f;
		rot_vec.at(0, 1) += (float)CV_PI * 0.01f;
		rot_vec.at(0, 2) += (float)CV_PI * 0.01f;

		/// Shift on (1,1,1)
		translation_phase += (float)CV_PI * 0.01f;
		translation = sin(translation_phase);

		Mat rot_mat;
		Rodrigues(rot_vec, rot_mat);

		/// Construct pose
		Affine3f pose(rot_mat, Vec3f(translation, translation, translation));

		myWindow.setWidgetPose("Cube Widget", pose);

		myWindow.spinOnce(1, true);
	}

	return 0;
}

编译调试没有错误的话会出现界面:

OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装_第14张图片

 

你可能感兴趣的:(OpenCV3历程)