[vtkusers] Select 2D image region in QVTKWidget

Khue Le huudienkhue.le at gmail.com
Thu Mar 15 18:06:55 EDT 2012


Any ideas please?
_____________________

*Huu Dien Khue LE*
- Automated Systems, Instrumentation and Computer Engineering student
  at l'Ecole Nationale d'Ingénieurs du Val de Loire (ENIVL), Blois, France;
- Master of Computer Science student at l'Ecole Polytechnique de
l'Université de Tours, France.
- Home: 10 rue Ronceraie, 41000 Blois, France
- Phone: +33 (0)9 82 50 90 09
- Mobile: +33 (0)6 66 67 84 70



On Wed, Mar 14, 2012 at 12:01 PM, Khue Le <huudienkhue.le at gmail.com> wrote:

> Hello everybody,
>
> I am writing a program using ImageViewer2 to display 2D images, in which I
> have to be able to select regions (by clicking and dragging the left mouse
> button). The image viewer should be embedded in a QVTKWidget.
>
> The problem is that I cannot get the both (displaying the image and
> selecting regions) working at the same time, but only one of them. Let me
> detail.
>
> 1. If I use  ImageViewer2:
>         vtkSmartPointer<vtkInteractorStyleRubberBand2D> style
> = vtkSmartPointer<vtkInteractorStyleRubberBand2D>::New();
>         style->AddObserver ( vtkCommand::SelectionChangedEvent,
> selectionChangedCallback );
>
>         vtkSmartPointer<vtkImageViewer2> imageViewer
> = vtkSmartPointer<vtkImageViewer2>::New();
>         vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor
> = vtkSmartPointer<vtkRenderWindowInteractor>::New();
>
>         renderWindowInteractor->SetInteractorStyle (style);
>         imageViewer->SetInput(vtkImage);
> imageViewer->SetupInteractor(renderWindowInteractor);
>
> vtkRenderer* renderer = imageViewer->GetRenderer();
>  renderer->ResetCamera();
>
> imageViewer->SetSize(widget->geometry().width(),widget->geometry().height());
>  imageViewer->SetRenderWindow(widget->GetRenderWindow());
> imageViewer->Render();
>         renderWindowInteractor->SetRenderWindow ( renderWindow );
>         renderWindowInteractor->Initialize();
>
> then the program can display the image, but it does not allow selecting
> regions. I think what's wrong here is that the interactor style did not
> change (am I right?). So to get the event handler working, we have to *change
> the interactor style of the image viewer*. Is there any way to do it?
>
> 2. If I don't use ImageViewer2:
>
>                 // Create an actor
>                 vtkSmartPointer<vtkImageActor> actor
> = vtkSmartPointer<vtkImageActor>::New();
>                 actor->SetInput( vtkImage);
>
>                 // Setup renderer
>                 vtkSmartPointer<vtkRenderer> renderer
> = vtkSmartPointer<vtkRenderer>::New();
>                 renderer->AddActor ( actor );
>                 renderer->ResetCamera();
>
>                 vtkSmartPointer<vtkRenderWindow>
> renderWindow=widget->GetRenderWindow();
>                 renderWindow->AddRenderer(renderer);
>                 vtkSmartPointer<vtkInteractorStyleRubberBand2D> style
> = vtkSmartPointer<vtkInteractorStyleRubberBand2D>::New();
>                 style->AddObserver ( vtkCommand::SelectionChangedEvent,
> selectionChangedCallback );
>
>                 // Setup render window interactor
>                 vtkSmartPointer<vtkRenderWindowInteractor>
> renderWindowInteractor =
>                 vtkSmartPointer<vtkRenderWindowInteractor>::New();
>                 renderWindowInteractor->SetInteractorStyle ( style );
>                 renderWindowInteractor->SetRenderWindow ( renderWindow );
>                 renderWindowInteractor->Initialize();
>                 renderWindowInteractor->Start();
>
> then I can very well select regions in the widget, but the image does not
> show up.
>
>
> I would really appreciate if someone can help.
>
> Thank you for reading.
> _____________________
>
> *Huu Dien Khue LE*
> - Automated Systems, Instrumentation and Computer Engineering student
>   at l'Ecole Nationale d'Ingénieurs du Val de Loire (ENIVL), Blois,
> France;
> - Master of Computer Science student at l'Ecole Polytechnique de
> l'Université de Tours, France.
> - Home: 10 rue Ronceraie, 41000 Blois, France
> - Phone: +33 (0)9 82 50 90 09
> - Mobile: +33 (0)6 66 67 84 70
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120315/106980b2/attachment.htm>


More information about the vtkusers mailing list