VTK入门教程06.01:显示图片

系列索引:VTK入门教程索引

先使用VTK显示一张图片。

新建一个Qt工程,将QWidget提升为vxkGenericOpenGLRenderWindow

读取数据

1
2
3
4
// 用vtkJPEGReader读取JPG图像
vtkSmartPointer<vtkPNGReader> reader = vtkSmartPointer<vtkPNGReader>::New();
reader->SetFileName(selectFilePath.toStdString().c_str());
reader->Update();

图片查看器

1
2
3
// 将reader的输出作为m_pImageViewer的输入
vtkSmartPointer< vtkImageViewer2 > m_pImageViewer= vtkSmartPointer< vtkImageViewer2 >::New();
m_pImageViewer->SetInputConnection(reader->GetOutputPort());

设置渲染窗口

创建OpenGL窗口

1
vtkSmartPointer<vtkGenericOpenGLRenderWindow> window = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();

设置渲染窗口

1
2
3
ui->widget->setRenderWindow(window);
m_pImageViewer->SetRenderWindow(window);
m_pImageViewer->Render();

图片是在view上显示的,view依附于window,所以要想界面显示图片就得刷新viewer

事件

先绑定事件

1
2
3
4
5
m_Connections = vtkEventQtSlotConnect::New();
m_Connections->Connect(window->GetInteractor(),
vtkCommand::MouseMoveEvent,
this,
SLOT(updateCoords(vtkObject*)));

槽函数

1
2
3
4
5
6
7
8
9
10
11
12
13
void MainWindow::updateCoords(vtkObject *obj)
{
// 获取交互器
vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::SafeDownCast(obj);

// 获取鼠标的当前位置
int event_pos[2];
iren->GetEventPosition(event_pos);

QString str;
str.sprintf("x=%d : y=%d", event_pos[0], event_pos[1]);
ui->statusbar->showMessage(str);
}

效果为

vtk+qt显示图片


VTK入门教程06.01:显示图片
https://feater.top/vtk/display-image-with-vtk/
作者
JackeyLea
发布于
2023年3月19日
许可协议