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

Cmake步骤这里不做详细介绍,主要介绍一下过程中可能遇到的问题:

一、contrib模块路径OPENCV_EXTRA_MODULES_PATH一律用反斜杠‘/’

二、viz模块依赖VTK(Visualization Toolkit),需要下载https://vtk.org/download/并cmake编译,步骤使用默认即可,相对较简单,这里使用最新的8.2.0版本,cmake后生成如下Install文件:

然后在cmake选项中勾选WITH_VTK(OpenCV4.2默认勾选),同时设置VTK_DIR为lib\cmake\vtk-8.2,如下图所示:

三、其他步骤相对简单,先config,在generate,然后生成ALL_BUILD,生成仅用于项目的Install,得到如bin、etc、include、x64文件夹,其中可以看到OpenCV2文件夹下有了viz.hpp,然后看下其他文件如lib/dll是否生成成功,我这里统一封装为opencv_world420.dll/lib

接下来就可以写个demo来测试是否编译成功了,可以自己新建一个工程,配置包含目录、库目录、附加依赖项,然后添加如下测试代码:

// Viz3D.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include #include #include #include using namespace cv;using namespace std;int main(){  /// 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);  /// Display widget (update if already displayed)  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) += CV_PI * 0.01f;    rot_vec.at(0, 1) += CV_PI * 0.01f;    rot_vec.at(0, 2) += CV_PI * 0.01f;    /// Shift on (1,1,1)    translation_phase += 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;}

运行时注意除了将opencv_world420.dll放到工程目录或加到环境变量,还需要将vtk的bin目录(D:\VTK_Install\bin)加入环境变量才能得到运行结果,上面代码运行结果如下:

动画效果:

当然你也可以显示三维图形类似如下效果:

opencv生成3d模型_OpenCV4.2使用viz模块显示3D图像相关推荐

  1. 2 vtk 编译_OpenCV4.2使用viz模块显示3D图像

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

  2. Qt 3D的研究(三):显示3D模型

    原文地址::https://blog.csdn.net/gamesdev/article/details/43964499 相关文章 1.Qt之实现3D纹理渲染自由旋转空间立方体----https:/ ...

  3. 3D模型代下【淘宝店3D模型代下渠道】解密

    3D模型代下[淘宝店3D模型代下渠道]解密

  4. 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】

    作者Augusto Ribeiro E Silva @augusto.ribeiroes的作品,人形武器 ,古代兵器. 或许你还想了解这些内容: 文章推荐阅读 [ 学习企鹅圈:1072172722 ] ...

  5. 3D模型欣赏:战斗风格美女【3D游戏建模教程】

    作者YeongJin Jeon的作品,机器人,局长. 文章推荐阅读 [ 学习企鹅圈:1072172722 ] : 3d建模什么水平能找到工作?次世代游戏建模需要学多久 3D建模师薪资怎么样? 室内设计 ...

  6. 3D模型欣赏:强肌肉男的壮汉3d角色 肉跟血管的纹理材质超级写实

    本作品是由国外3D设计师 FabricioBatista创作的,是一个超强肌肉男的壮汉3d角色.肌肉跟血管的纹理材质超级写实,处理细腻,整体造型动作设计带感,值得参考 文章推荐阅读 [ 学习企鹅圈:1 ...

  7. 3D模型欣赏:武侠风美女【3D游戏建模教程】

    武侠风美女 文章推荐阅读 [ 学习企鹅圈:1072172722 ] : 3d建模什么水平能找到工作?次世代游戏建模需要学多久 3D建模师薪资怎么样? 室内设计建模6k+,游戏建模16k+,差距在哪? ...

  8. python opencv生成tf模型_基于TensorFlow+ Opencv 的人脸识别 和模型训练

    一.准备工作 本次实例的anaconda 环境 (有需要的自己导入anaconda) 链接:https://pan.baidu.com/s/1IVt2ap-NYdg64uHSh-viaA 提取码:g7 ...

  9. 安卓开发3d模型展示源码_玩具模型样品3D打印,让玩具开发无限可能

    3D打印技术的进步,正在悄无声息的影响着各个行业与领域.对各大玩具爱好者来说,这是一个激发创造力以及将自己想象力变为现实的好东西.据统计,越来越多的玩具厂家用3D打印机来制作玩具样品,以便开发出更好的 ...

最新文章

  1. 人工智能,能治工人!
  2. 访问者模式的java语言_Java 设计模式 之 访问者模式
  3. 操作系统---Systemd
  4. 百分点首席经济学家张忠解读《美国白宫大数据白皮书》
  5. Ethernet/IP 学习笔记五
  6. 如何在C#中使用 ArrayPool,MemoryPool
  7. js如何实现动态显示表格数据(点奇数显示奇数单元格内容)
  8. Java解决CAS机制中ABA问题的方案
  9. 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
  10. NLP一键中文数据增强工具
  11. Linux自动删除n天前备份
  12. 如何在Linux操作系统查看文件创建时间
  13. 大学里,数据系鄙视物理系,请问二位来自漫画系嘛?
  14. js JSON转Excel并导出
  15. python弧度制转角度制_弧度制与角度制转换
  16. Jenkins用户权限
  17. Redis统计用户访问量
  18. 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
  19. Away3d材质实战——旋转的地球
  20. 比上清华更难的,是加入这支中国顶级黑客战队

热门文章

  1. 对比两个自定义对象是否相等
  2. 银行放贷冲动不强:7折房贷利率料最早明年现身
  3. jy-12-SPRINGMYBATIS02——云笔记03-刘苍松
  4. 微信支付商家收款费率怎么降低,商户开通0.2%~0.38%手续费教程
  5. 以下使用计算机的不良习惯,1.以下使用计算机的不好习惯是( )。 A. 关机前退出所有正在执行的应用程序 B. 使用标准的文件扩展名 C....
  6. Cesium不改源码支持坐标系为4490的ArcGIS Rest缓存服务的解决方案,代码为TypeScript编写(vx gzh【图说GIS】)
  7. Filebeat is unable to load the Ingest Node pipelines for the configured modules
  8. c++内存管理:new与delete,深拷贝与浅拷贝
  9. 左岸:如何修炼成某一领域的高手
  10. 今日头条精准引流技巧,今日头条超简单的引流技巧