[vtkusers] Reading DICOM using vtkImageActor
Sam Raby
rabysam28 at gmail.com
Mon Mar 31 12:11:41 EDT 2014
Hi,
As mentioned, I am reading DICOM using vtkImageActor instead of
vtkImageReviewer2. I have a simple code below. The problem is that when I
run the code, the slice does not show up, unless I slightly manipulate the
window by mouse. Once I touch the window and move the mouse, the slice
shows up immediately. Would you let me know why this happens?
vtkSmartPointer<vtkDICOMImageReader> reader =
vtkSmartPointer<vtkDICOMImageReader>::New();
reader->SetDirectoryName("/home/DICOM_Dir");
reader->Update();
vtkSmartPointer<vtkImageActor> imageActor =
vtkSmartPointer<vtkImageActor>::New();
imageActor->SetInputData(reader->GetOutput());
imageMapper = vtkImageSliceMapper::SafeDownCast( imageActor->GetMapper() );
imageMapper->SetSliceNumber(10);
vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();
ren->AddActor(imageActor);
ren->ResetCamera();
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(ren);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor
= vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleTrackballCamera>
interactorImageStyle =
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
renderWindowInteractor->SetInteractorStyle(interactorImageStyle);
renWin->SetInteractor(renderWindowInteractor);
renderWindowInteractor->SetRenderWindow(renWin);
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
Thanks.
-S
On Fri, Mar 21, 2014 at 12:57 AM, Sam Raby <rabysam28 at gmail.com> wrote:
> Thanks David. Adding SafeDownCast rectified the error, and I can now
> change the slice number using vtkImageSliceMapper object.
>
> I initially was going to change the slice number through vtkImageActor,
> but the method that is in charge (i.e. SetZSlice) appeared to be not
> working, as reported in the past on the link, and hence I thought to
> change the slice number via its mapper. Thanks for the help!
>
> http://www.paraview.org/Bug/bug_relationship_graph.php?
> bug_id=3661&graph=dependency
>
>
> -S
>
>
> On Wed, Mar 19, 2014 at 2:28 PM, David Gobbi <david.gobbi at gmail.com>wrote:
>
>> On Wed, Mar 19, 2014 at 12:59 PM, Sam Raby <rabysam28 at gmail.com> wrote:
>> > thanks for the feedback. I am following your solution as below:
>> >
>> > vtkImageSliceMapper* myMapper = myActor->GetMapper();
>> > myMapper->SetSliceNumber(sliceNum);
>> >
>> > However I am getting the following error:
>> >
>> > error: invalid conversion from 'vtkImageMapper3D*' to
>> 'vtkImageSliceMapper*'
>> > [-fpermissive]
>> >
>> > I was not sure how to address this. Am I missing something here?
>>
>> Oops, I guess it needs a cast.
>>
>> vtkImageSliceMapper* myMapper =
>> vtkImageSliceMapper::SafeDownCast(myActor->GetMapper());
>>
>> Perhaps vtkImageActor should have a SetSliceNumber() and
>> SetOrientation() method itself, instead of these methods being just in
>> the mapper.
>>
>> David
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20140331/09ce2a04/attachment.html>
More information about the vtkusers
mailing list