opencv生成3d模型_OpenCV4.2使用viz模块显示3D图像
在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图像相关推荐
- 2 vtk 编译_OpenCV4.2使用viz模块显示3D图像
在OpenCV 3D视觉中如果需要显示三维数据或图像就需要用到viz模块,viz是OpenCV的3D显示模块,OpenCV官方release版本不包含此模块,需要我们自己cmake编译. Cmake步 ...
- Qt 3D的研究(三):显示3D模型
原文地址::https://blog.csdn.net/gamesdev/article/details/43964499 相关文章 1.Qt之实现3D纹理渲染自由旋转空间立方体----https:/ ...
- 3D模型代下【淘宝店3D模型代下渠道】解密
3D模型代下[淘宝店3D模型代下渠道]解密
- 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】
作者Augusto Ribeiro E Silva @augusto.ribeiroes的作品,人形武器 ,古代兵器. 或许你还想了解这些内容: 文章推荐阅读 [ 学习企鹅圈:1072172722 ] ...
- 3D模型欣赏:战斗风格美女【3D游戏建模教程】
作者YeongJin Jeon的作品,机器人,局长. 文章推荐阅读 [ 学习企鹅圈:1072172722 ] : 3d建模什么水平能找到工作?次世代游戏建模需要学多久 3D建模师薪资怎么样? 室内设计 ...
- 3D模型欣赏:强肌肉男的壮汉3d角色 肉跟血管的纹理材质超级写实
本作品是由国外3D设计师 FabricioBatista创作的,是一个超强肌肉男的壮汉3d角色.肌肉跟血管的纹理材质超级写实,处理细腻,整体造型动作设计带感,值得参考 文章推荐阅读 [ 学习企鹅圈:1 ...
- 3D模型欣赏:武侠风美女【3D游戏建模教程】
武侠风美女 文章推荐阅读 [ 学习企鹅圈:1072172722 ] : 3d建模什么水平能找到工作?次世代游戏建模需要学多久 3D建模师薪资怎么样? 室内设计建模6k+,游戏建模16k+,差距在哪? ...
- python opencv生成tf模型_基于TensorFlow+ Opencv 的人脸识别 和模型训练
一.准备工作 本次实例的anaconda 环境 (有需要的自己导入anaconda) 链接:https://pan.baidu.com/s/1IVt2ap-NYdg64uHSh-viaA 提取码:g7 ...
- 安卓开发3d模型展示源码_玩具模型样品3D打印,让玩具开发无限可能
3D打印技术的进步,正在悄无声息的影响着各个行业与领域.对各大玩具爱好者来说,这是一个激发创造力以及将自己想象力变为现实的好东西.据统计,越来越多的玩具厂家用3D打印机来制作玩具样品,以便开发出更好的 ...
最新文章
- 人工智能,能治工人!
- 访问者模式的java语言_Java 设计模式 之 访问者模式
- 操作系统---Systemd
- 百分点首席经济学家张忠解读《美国白宫大数据白皮书》
- Ethernet/IP 学习笔记五
- 如何在C#中使用 ArrayPool,MemoryPool
- js如何实现动态显示表格数据(点奇数显示奇数单元格内容)
- Java解决CAS机制中ABA问题的方案
- 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
- NLP一键中文数据增强工具
- Linux自动删除n天前备份
- 如何在Linux操作系统查看文件创建时间
- 大学里,数据系鄙视物理系,请问二位来自漫画系嘛?
- js JSON转Excel并导出
- python弧度制转角度制_弧度制与角度制转换
- Jenkins用户权限
- Redis统计用户访问量
- 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
- Away3d材质实战——旋转的地球
- 比上清华更难的,是加入这支中国顶级黑客战队
热门文章
- 对比两个自定义对象是否相等
- 银行放贷冲动不强:7折房贷利率料最早明年现身
- jy-12-SPRINGMYBATIS02——云笔记03-刘苍松
- 微信支付商家收款费率怎么降低,商户开通0.2%~0.38%手续费教程
- 以下使用计算机的不良习惯,1.以下使用计算机的不好习惯是( )。 A. 关机前退出所有正在执行的应用程序 B. 使用标准的文件扩展名 C....
- Cesium不改源码支持坐标系为4490的ArcGIS Rest缓存服务的解决方案,代码为TypeScript编写(vx gzh【图说GIS】)
- Filebeat is unable to load the Ingest Node pipelines for the configured modules
- c++内存管理:new与delete,深拷贝与浅拷贝
- 左岸:如何修炼成某一领域的高手
- 今日头条精准引流技巧,今日头条超简单的引流技巧