# Need Help with VTK Project: Loading Medical Images and draw line on it, vtkImagedata, vtklinewidget2 qt and cpp

**URL:** <https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376>\
**Category:** Development\
**Tags:** code\
**Created:** [September 27, 2023, 9:54am UTC](https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376 "2023-09-27T09:54:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mdeepakcdac](https://discourse.vtk.org/user_avatar/discourse.vtk.org/mdeepakcdac/32/8720_2.png) [@mdeepakcdac](https://discourse.vtk.org/u/mdeepakcdac)\
**Post date:** [September 27, 2023, 9:54am UTC](https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376/1 "2023-09-27T09:54:48Z")

</div>

I’m working on a project that involves loading medical image data in VTK (Visualization Toolkit), using Qt and C++, and rendering it using VTKImageViewer2. Additionally, I need to draw a line on the displayed image using VTKLineWidget2. I’ve added two renderers to the render window with layered indexing. Unfortunately, only the image is being displayed. Below, I have provided the code.

```auto
QVTKOpenGLWidget *m_pvtkWidget = new QVTKOpenGLWidget;
m_pvtkWidget->setStyleSheet("background-color: black");
vtkNew <vtkGenericOpenGLRenderWindow> m_openGlRenWin;

m_pvtkWidget->SetRenderWindow(m_openGlRenWin);

vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
QString filep= "path to dicom file";
reader->SetFileName(filep.toUtf8().constData());
reader->Update();
vtkSmartPointer<vtkImageData> imageData = reader->GetOutput();  

vtkSmartPointer<vtkRenderer> m_rendererMainScene = vtkSmartPointer<vtkRenderer>::New();

    m_rendererMainScene->GradientBackgroundOn();
    m_rendererMainScene->SetLayer(0); // Layer 0 has a background

   vtkSmartPointer<vtkRenderer> m_rendererForeground = vtkSmartPointer<vtkRenderer>::New();
 
    m_rendererForeground->SetLayer(1);

     m_pvtkWidget->GetRenderWindow()->AddRenderer(m_rendererMainScene);
     m_pvtkWidget->GetRenderWindow()->AddRenderer(m_rendererForeground);

    vtkNew<vtkImageActor> imageActor;
     imageActor->GetMapper()->SetInputData(imageData );

 
    m_rendererMainScene->AddActor(imageActor);

    vtkSmartPointer<vtkLineWidget2> lineWidget = vtkSmartPointer<vtkLineWidget2>::New();
    double pointPos1[3];
    double pointPos2[3];
    pointPos1[0]=50;
    pointPos1[1]=50;
    pointPos1[2]=0;
    pointPos2[0]=150;
    pointPos2[1]=150;
    pointPos2[2]=0;
    lineWidget->CreateDefaultRepresentation();
    lineWidget->GetLineRepresentation()->SetLineColor(255, 0,0);
    lineWidget->GetLineRepresentation()->GetLineProperty()->SetLineWidth(.25);
    lineWidget->GetLineRepresentation()->SetPoint1WorldPosition(pointPos1);
    lineWidget->GetLineRepresentation()->SetPoint2WorldPosition(pointPos2);
    lineWidget->GetRepresentation()->SetHandleSize(0);
    lineWidget->GetEventTranslator()->ClearEvents();
       lineWidget->SetInteractor(m_pvtkWidget->GetRenderWindow()->GetInteractor());

    m_rendererForeground->AddActor(lineWidget->GetLineRepresentation());
    lineWidget->On();

   m_pvtkWidget->GetRenderWindow()->Render();
    m_pvtkWidget->GetRenderWindow()->GetInteractor()->Start();

```

Could you please take a look at it and kindly help me sort it out?

---

<div class="post-metadata">

**Author:** ![Paulo\_Carvalho](https://discourse.vtk.org/user_avatar/discourse.vtk.org/paulo_carvalho/32/370_2.png) [@Paulo\_Carvalho](https://discourse.vtk.org/u/Paulo_Carvalho)\
**Post date:** [October 1, 2023, 9:12pm UTC](https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376/2 "2023-10-01T21:12:03Z")

</div>

Hello,

I believe this is missing:

```cpp
   m_rendererForeground->SetActiveCamera( m_rendererMainScene->GetActiveCamera() );

```

best,

PC

---

<div class="post-metadata">

**Author:** ![lassoan](https://discourse.vtk.org/user_avatar/discourse.vtk.org/lassoan/32/50_2.png) [@lassoan](https://discourse.vtk.org/u/lassoan)\
**Post date:** [October 2, 2023, 3:59am UTC](https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376/3 "2023-10-02T03:59:16Z")

</div>

> [@mdeepakcdac](#):
>
> loading medical image data in VTK (Visualization Toolkit), using Qt and C++, and rendering it

This is exactly what 3D Slicer has been designed for. It looks like a really simple task, but even just loading a wide range of DICOM data robustly (including segmentations, structure sets, transforms, 4D/5D data, etc.; handle loading of images with variable slice spacing, tilted gantry, etc.), render it in slice and 3D views, and segmenting and annotating is a very large project that should not be restarted from scratch. 3D Slicer is open-source, completely freely usable and modifiable/extensible for any purpose.

If you want to do just a very simple application and you are sure that it will not need to evolve to a more complete, feature-rich tool then it is probably better to use web technologies (vtk.js, OHIF, maybe trame, etc.) as users will refuse to install an application just to do some simple things.

---

<div class="post-metadata">

**Author:** ![mdeepakcdac](https://discourse.vtk.org/user_avatar/discourse.vtk.org/mdeepakcdac/32/8720_2.png) [@mdeepakcdac](https://discourse.vtk.org/u/mdeepakcdac)\
**Post date:** [November 16, 2023, 5:44am UTC](https://discourse.vtk.org/t/need-help-with-vtk-project-loading-medical-images-and-draw-line-on-it-vtkimagedata-vtklinewidget2-qt-and-cpp/12376/4 "2023-11-16T05:44:13Z")

</div>

Thank you @lassoan .
