Opencv中3D显示模块viz安装

文章目录

  • 前言
  • 安装cmake
  • 编译viz
  • 编译opencv
    • 3.4.4
    • 4.0.0
  • VS2015测试

前言

   最近工作需要在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

      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);elseline5.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);}
}

   3)显示结果

Opencv中3D显示模块viz安装相关推荐

  1. OpenCV_Viz——OpenCV中Viz的模块编译的无法解析的外部符号BUG

    写在前面 由于实验室需要,需要重新编译医学图像第三方库全家桶.这里就需要编译OpenCV,而编译后查看编译的库文件中缺少一个opencv_viz2413d.lib文件(没错,这里可以看出我使用的Ope ...

  2. OpenCV Viz 3D虚拟空间模块

    在OpenCV2.4.9发布release版本时添加了3D模块,实现起来非常简洁漂亮,三维虚拟空间模块是集成自三维计算机图形学.图像处理和可视化的VTK得到的,OpenCV3.0的OpenCV tut ...

  3. opencv中加入contrib模块

    一.到网上下载opencv_contrib-master.zip并解压 放到如下这样的目录 二.下载protobuf-cpp-3.1.0.tar.gz.v1.0.0a3.tar.gz.vgg_gene ...

  4. 一文详解OpenCV中的CUDA模块

    如果您使用OpenCV已有一段时间,那么您应该已经注意到,在大多数情况下,OpenCV都使用CPU,这并不总能保证您所需的性能.为了解决这个问题,OpenCV在2010年增加了一个新模块,该模块使用C ...

  5. Opencv中使用ocl模块遇到的问题

    报错:Assertion failed (localThreads[0] * localThreads[1] * localThreads[2] <= kernelWorkGroupSize) ...

  6. opencv生成3d模型_OpenCV4.2使用viz模块显示3D图像

    在OpenCV 3D视觉中如果需要显示三维数据或图像就需要用到viz模块,viz是OpenCV的3D显示模块,OpenCV官方release版本不包含此模块,需要我们自己cmake编译. Cmake步 ...

  7. OpenCV 3D显示Viz模块

    目录 1. OpenCV Viz 模块是什么 2. 如何编译 3. 如何使用 4. Result 5. 参考 1. OpenCV Viz 模块是什么 OpenCV_Viz 模块是OpenCV的3D 可 ...

  8. OpenCV中Viz模块的安装(VS2015)

    背景 因工作需要使用openCV中的Viz模块,而默认的OpenCV包是不含viz模块的.故需特别安装,现将安装过程简要记录如下,以作备忘. OpenCV 2.4.13 VTK 7.1.1 CMake ...

  9. [OpenCV实战]39 在OpenCV中使用ArUco标记的增强现实

    文章目录 1 什么是ArUco标记? 2 在OpenCV中生成ArUco标记 3 检测Aruco标记 4 增强现实应用 5 总结和代码 5.1 生成aruco标记 5.2 使用aruco增强现实 6 ...

最新文章

  1. 参加过java培训机构的学员如何找出路
  2. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
  3. UA MATH567 高维统计专题1 稀疏信号及其恢复1 L0-norm minimization
  4. html 数据项放在 标签,如何在HTML中传递数据选择选项标签?
  5. poj3070 Fibonacci 矩阵快速幂
  6. Codeforces 982 C. Cut 'em all!(dfs)
  7. UPLOOKING_APUE
  8. 双足机器人简单步态生成
  9. 【蓝桥杯嵌入式】【STM32】12_2020_第十一届_蓝桥杯_嵌入式设计与开发项目_省赛
  10. kudu建表:Not enough live tablet servers to create a table with the requested replication factor 3. 2
  11. 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest题解
  12. 【OpenCV】图像旋转详解,边缘用黑色填充
  13. C 语言实例 - 判断奇数/偶数
  14. windows下的gitbub使用入门
  15. 消息队列返回错误:Resource temporarily unavailable
  16. 2021年美容师(中级)新版试题及美容师(中级)免费试题
  17. [Example构造方法增加notNull参数,默认false,允许值为null,值为null的时候不加入到条件中
  18. SpringMVC框架从入门到精通
  19. Android 5.0 CardView 应用
  20. Java~Java代理模式

热门文章

  1. android 网络运营商的名字显示规则(锁定屏幕,下拉列表)
  2. 这篇文章终于把中美德三国的工业互联网讲清楚了
  3. python画三维坐标图像_由RGB-D图像获取三维坐标(相机坐标) Python
  4. ASP.NET MVC 最好的视图引擎是什么?
  5. 论文撰写八大技巧与八大心得,一文读懂
  6. 对技术的态度/编程修养(上)
  7. 史玉柱和郭广昌谈创业团队管理:两种类型的“孔雀王”
  8. 只要400行代码就能自已实现一个绘图机原型固件,esp8266 + micropython 用3d打印机改的绘图机
  9. C++ STL 之堆栈(后进先出) stack 详解
  10. Android之WebView的使用与简单浏览器