int main(int, char* [])
{
// 创建vtkRenderer、vtkRenderWindow和vtkRenderWindowInteractor
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
vtkNew<vtkNamedColors> colors;
renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());
renderWindow->AddRenderer(renderer);
// Read the JPEG image
vtkSmartPointer<vtkPNGReader> reader =
vtkSmartPointer<vtkPNGReader>::New();
reader->SetFileName("C:\\Users\\admin\\Desktop\\image\\1.jpg");
reader->Update();
// Create an actor
vtkSmartPointer<vtkImageActor> actor =
vtkSmartPointer<vtkImageActor>::New();
actor->SetInputData(reader->GetOutput());
renderWindow->SetSize(reader->GetOutput()->GetDimensions()[0], reader->GetOutput()->GetDimensions()[1]);
renderer->AddActor2D(actor);
// 添加自定义的vtkInteractorStyle
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
//vtkSmartPointer<MyInteractorStyle> style = v
tkSmartPointer<MyInteractorStyle>::New();
//style->SetDefaultRenderer(renderer);
//renderWindowInteractor->SetInteractorStyle(style);
vtkSmartPointer<vtkContourWidget> contourWidget =
vtkSmartPointer<vtkContourWidget>::New();
vtkSmartPointer<vtkOrientedGlyphContourRepresentation> rep =
vtkSmartPointer<vtkOrientedGlyphContourRepresentation>::New();
rep->GetLinesProperty()->SetColor(1.0, 0.0, 0.0); // 将轮廓线的颜色设置为红色
rep->GetLinesProperty()->SetLineWidth(5.0); // 将轮廓线的宽度设置为2
contourWidget->SetRepresentation(rep);
contourWidget->SetInteractor(renderWindowInteractor);
contourWidget->EnabledOn();
renderer->AddActor(contourWidget->GetRepresentation());
//选择笔刷\橡皮檫\画笔
style->SetBrushType(std::string("square"));
// 显示vkRenderWindow并启动vtkRenderWindowInteractor事件循环
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
c++/vtk使用vtkContourWidget勾勒病灶曲线
最新推荐文章于 2024-05-22 19:56:55 发布