python vtk实时更新点云_VTK根据三维坐标点集生成点云

一个简单的利用VTK根据三维坐标点集生成点云的例子,仅供参考。

一、环境:vtk-8.1 & vs2013(需自行配置vtk的环境)

二、我所读取的三维坐标点集为txt格式文件,每个点的x,y,z坐标为单独一行。至于读取方法可以根据自己的点集数据结构重写读取方法,源码如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

VTK_MODULE_INIT(vtkRenderingOpenGL2); //vs和cmake的编译选项不一致,非cmake生成的工程需添加,否则运行报错

int main()

{

std::string fliename = "../bin/config/pointcloud.txt";

std::ifstream ifs(fliename.c_str());

std::string singleLine;

double x, y, z,low_z = DBL_MAX,high_z = DBL_MIN;

vtkSmartPointer points = vtkSmartPointer::New();

//分行读取文件

while (std::getline(ifs,singleLine))

{

std::stringstream linestream;

linestream << singleLine;

linestream >> x >> y >> z;

if (z < low_z)

low_z = z;

else if (z > high_z)

high_z = z;

points->InsertNextPoint(x, y, z);

}

ifs.close();

vtkSmartPointer polydata = vtkSmartPointer::New();

polydata->SetPoints(points);

vtkSmartPointer glyphFilter = vtkSmartPointer::New();

glyphFilter->SetInputData(polydata);

glyphFilter->Update();

vtkElevationFilter *elevationFilter = vtkElevationFilter::New();

elevationFilter->SetInputConnection(glyphFilter->GetOutputPort());

elevationFilter->SetLowPoint(0, 0, low_z);

elevationFilter->SetHighPoint(0, 0, high_z);

vtkPolyDataMapper *dataMapper = vtkPolyDataMapper::New();

dataMapper->SetInputConnection(elevationFilter->GetOutputPort());

vtkActor *actor = vtkActor::New();

actor->SetMapper(dataMapper);

vtkRenderer *renderer = vtkRenderer::New();

renderer->AddActor(actor);

renderer->SetBackground(.0, .0, .0);//设置背景色

vtkRenderWindow *renderwind = vtkRenderWindow::New();

renderwind->AddRenderer(renderer);

vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();

vtkRenderWindowInteractor *renderwindIt = vtkRenderWindowInteractor::New();

renderwindIt->SetRenderWindow(renderwind);

renderwindIt->SetInteractorStyle(style);

renderwind->Render();

renderwindIt->Start();

return 0;

}

下面附一张读取的部分点云图:

&OpenCurlyDoubleQuote;为什么DirectX里表示三维坐标要建一个4&ast;4的矩阵?”

0x00 前言 首先要说明的是,本文的标题事实上来自于知乎上的一个同名问题:为什么directX里表示三维坐标要建一个4*4的矩阵? - 编程 .因此,正如Milo Yip大神所说的这个标题事实上是存 ...

ACM1174&lowbar;爆头解题思路&lowbar;空间三维坐标求点到直线的距离

/* 爆头 Description gameboy是一个CS高手,他最喜欢的就是扮演警察, 手持M4爆土匪的头.也许这里有人没玩过CS,有必 要介绍一下“爆头”这个术语:所谓爆头,就是子 弹直接命中对 ...

OpenGL 获取当前屏幕坐标的三维坐标(gluUnProject使用例子 Qt)

之前使用VS+glut实现了gluUnProject使用例子,用于渲染管道的逆过程,将屏幕坐标转换为opengl三维坐标,本文将尝试使用QT来实现. 代码如下:  main.cpp  12345678 ...

MATLAB在三维坐标中显示图片 并 使得图片部分透明

要画一个光路图,本来可以用proe,但是鼠标不好用,有些操作也忘了,用MATLAB画了个.下面是用到的图片. 但是三维坐标中显示彩色图片的目标没有搞定,做了个灰度图,然后用仿射程序将彩色图片贴到了二维 ...

OpenGL 获取当前屏幕坐标对应的三维坐标

转自原文 OpenGL 获取当前屏幕坐标对应的三维坐标,使用很简单glu库中的一个函数 #include #include #in ...

opencv估计两图的三维坐标变换矩阵

cv::estimateAffine3D(MatFrom, MatTo, Transfrom, inlier); Transform得到的是重MatFrom到MatTo的变换矩阵.inlier给一个空 ...

MATLAB:读取txt文件中物体的三维坐标,显示三维模型

在MATLAB中建立一个脚本show3Dtxt.m文件,编写代码: clear; %%read 3D data fileID= fopen('E:\博士\深度学习与三维重建\代码实现\voxel_gr ...

OpenGL 获取当前屏幕坐标的三维坐标(gluUnProject使用例子 VS&plus;glut)

本例子参考于网络,并进行了一些修改,使用glut+vs2008来实现. 在鼠标点击处重新画一个旋转的红色立方体! 参考代码如下:  C++ Code  123456789101112131415161 ...

MATLAB:读取mat文件中物体的三维坐标,显示三维模型

在MATLAB中建立一个脚本show3Dmat.m文件,编写代码: clc; clear; %%read 3D data load('E:\博士\深度学习与三维重建\代码实现\3DRecGAN\X_Y ...

随机推荐

Android HttpClient post MultipartEntity - Android 上传文件

转自[http://blog.csdn.net/hellohaifei/article/details/9707089] 在Android 中使用HttpClient,MultipartEntity ...

IE6下 input 背景图滚动问题及标签规范

ie6 背景图滚动问题:

ie6下input背景图滚动问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值