当前位置:   article > 正文

Opencv中3D显示模块viz安装_viz模块下载

viz模块下载

Opencv中3D显示模块viz安装

前言

   最近工作需要在VS2105中调用opencv的3D显示模块viz,默认情况下,opencv点安装是不会自动安装viz模块的
   关于viz模块,首先要取决于opencv的版本;在opencv4.0之前的版本,对应的opencv_contrib中是没有viz模块的,则需要从vtk包中获取,即先编译vtk,再编译opencv;而opencv4.0起,viz模块被移植进opencv_contrib中了,所以只需要加上opencv_contrib编译opencv即可
   既然需要手动编译,那么cmake神器必不可少,个人整体环境如下:
   Win10,x64
   VS2015
   cmake1.13,opencv3.4.4,vtk8.2,opencv4.0,opencv_contrib4.0戳这里下载, 提取码:funk )

安装cmake

   本文使用的cmake是事先编译好的exe,所以不需要安装了,有需要从上文连接下载即可;若自己安装也非常简单,同一般安装程序一样,下一步即可
   解压cmake包,打开bin目录下的cmake-gui.exe


在这里插入图片描述

编译viz

   1)解压VTK-8.2.0.zip
   2)cmake配置


在这里插入图片描述

   3)Generate(选择vs2015编译器)
   4)选项配置
      A:选中BUILD_SHARED_LIBS(默认)
      B:取消BUILD_EXAMPLES(默认),如果深入研究VTK的同学,可以勾选上,学学例子
      C:取消BUILD_TESTING(默认)
      D:install路径,默认C:/Program Files/VTK,默认安装在C盘系统目录下,当然我们也可以自己设置路径:(我的在安装包下VTK,这个可以自己随意)

		D:/program files/Opencv_vtk/VTK-8.2.0/VTK
  • 1

      E:再次generate(全部默认选项,不需要)

   5)Configure,完全后就可关闭cmake了
   6)打开build/VTK.sln
   若Install路径为C盘系统,则需要用管理员权限打开,不然后面install时会因为权限不够报错;若存在右键没有管理员打开选项,则用管理员权限打开cmd,进入build目录,运行VTK.sln


在这里插入图片描述

   若为自己设置的路径,则不需要管理员权限,打开即可
   7)选择Debug或Release,默认为Debug,根据自己需求,也可两个分开都编译出来
   8)ALL_BUILD(点击ALL_BUILD–>>生成,时间有点长)
   9)INSTALL(点击INSTALL–>>仅用于项目–>>仅生成INSTALL)
   install后,VTK目录(自己设置的install目录,或默认C:/Program Files/VTK)就有了vtk相关头文件,库文件


在这里插入图片描述

   10)Debug编译出来后,备份库文件,编译Release版本;然后整理打包,头文件相同,但库文件不同,需要分开


在这里插入图片描述

编译opencv

3.4.4

   Opencv的编译网上一大堆,本人前期博客也总结过,这里就不详述;只是再配置选项时,注意选上WITH_VTK
   VTK_DIR:若安装在C盘,cmake会自动找到;如自己设置路径需要手动指定到自己install VTK的位置(D:/program files/Opencv_vtk/VTK-8.2.0/VTK/Release/lib/cmake/vtk-8.2)
   然后打开OpenCV.sln,编译ALL_BUILD,INSTALL
   最后在build/install下就会看到我们想要的文件(检查include下是否有viz就可以了)

4.0.0

   这个就更简单了,只需在配置选项时,指定contrib包的路径即可(OPENCV_EXTRA_MOUDULES_PATH)
   同上

VS2015测试

   1)配置
   这个网上也很多了,说白了就是告诉工程,需要加载的库:头文件在哪?,lib文件需要哪些?,dll文件在哪?
   2)显示3D手
   下列代码只是测试用,并不最优;需要注意的是多次调用showWidget(“id”, Line1)时,需要用不同的id,否则会覆盖;当然viz里面还有很多方法,这里就不一一举例

void Show3DPoint(std::vector<std::pair<std::string, std::vector<cv::Point3f>>> handFrame3DPoint
, float scale, float lineW, float circleR)
{
	//初始化
	cv::viz::Viz3d window("window");

	//显示坐标系
	window.showWidget("Coordinate", cv::viz::WCoordinateSystem());

	for (int n = 0; n < handFrame3DPoint.size(); n++)
	{
		std::vector<cv::Point3f> line1, line2, line3, line4, line5;
		cv::String hand(cv::format("%d", n));
		
		for (int p = 0; p < handFrame3DPoint[n].second.size(); p++)
		{
			cv::String pt(cv::format("%d", p));

			cv::Point3f point;
			point.x = scale*handFrame3DPoint[n].second[p].x;
			point.y = scale*handFrame3DPoint[n].second[p].y;
			point.z = scale*handFrame3DPoint[n].second[p].z;

			cv::Vec3d normal(0,0,1);
			cv::viz::WCircle circle(scale*circleR, point, normal);
			window.showWidget(hand + pt, circle);

			if (p==0)
			{
				line1.push_back(point);
				line2.push_back(point);
				line3.push_back(point);
				line4.push_back(point);
				line5.push_back(point);
			}
			else if (p < 5)
				line1.push_back(point);
			else if (p < 9)
				line2.push_back(point);
			else if (p < 13)
				line3.push_back(point);
			else if (p < 17)
				line4.push_back(point);
			else
				line5.push_back(point);
		}

		cv::viz::WPolyLine Line1(line1,cv::viz::Color::red());
		Line1.setRenderingProperty(cv::viz::LINE_WIDTH, scale*lineW);
		window.showWidget(hand + "line1", Line1);

		cv::viz::WPolyLine Line2(line2, cv::viz::Color::yellow());
		Line2.setRenderingProperty(cv::viz::LINE_WIDTH, scale*lineW);
		window.showWidget(hand + "line2", Line2);

		cv::viz::WPolyLine Line3(line3, cv::viz::Color::blue());
		Line3.setRenderingProperty(cv::viz::LINE_WIDTH, scale*lineW);
		window.showWidget(hand + "line3", Line3);

		cv::viz::WPolyLine Line4(line4, cv::viz::Color::orange());
		Line4.setRenderingProperty(cv::viz::LINE_WIDTH, scale*lineW);
		window.showWidget(hand + "line4", Line4);

		cv::viz::WPolyLine Line5(line5, cv::viz::Color::green());
		Line5.setRenderingProperty(cv::viz::LINE_WIDTH, scale*lineW);
		window.showWidget(hand + "line5", Line5);
	}
		
	while (!window.wasStopped())
	{
		window.spinOnce(1, true);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

   3)显示结果


在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/119738
推荐阅读
相关标签
  

闽ICP备14008679号