[vtkusers] vtkImageImport
Erik Türke
tuerke at cbs.mpg.de
Mon Mar 29 17:10:32 EDT 2010
On 03/29/2010 10:07 PM, David Gobbi wrote:
> On Mon, Mar 29, 2010 at 1:33 PM, Erik Türke<tuerke at cbs.mpg.de> wrote:
>> On 03/29/2010 08:40 PM, David Gobbi wrote:
>>> On Mon, Mar 29, 2010 at 12:26 PM, Erik Türke<tuerke at cbs.mpg.de>
>>> wrote:
>>>
>>>
>>>> Hi!
>>>>
>>>> Well, this should be part of an adapter...so the user should get a
>>>> list
>>>> of
>>>> pointers to vtkImageData objects (i return a list since the adapter
>>>> also
>>>> gets 4d data as input).
>>>> But it seems, this is not possible, so i have to return a list of
>>>> pointers
>>>> to vtkImageImport objects, what imho is a little odd for the user
>>>> of the
>>>> adapter.
>>>>
>>> I don't understand what you are trying to say. Can you give more
>>> detail?
>>>
>>> David
>>>
>> Hi
>>
>> I want to write an adapter which takes an image object of an own type
>> and
>> returns a list of vtkImageData type pointers, like:
>>
>> data::ImageList imgList = isis::data::IOFactory::load("data.nii", "");
>>
>> or
>>
>> isis::data::ImageList imgList = isis::data::IOFactory::load("data.v",
>> "");
>>
>> imgList is the image object of type own, which i want to transform
>> into a
>> vtkImageData object, like
>>
>> std::list<vtkImageData*> vtkList =
>> isis::adapter::VTKAdapter::makeVtkImageList(imgList.front());
>>
>> (do not be confused of the imgList.front()...this is an object of
>> dimension
>> 4, so i want to return a list of 3d vtkdata)
>>
>> So, if someone for instance write an vtk image viewer which should
>> support
>> the isis image type, he/she can use the VTKAdapter to transform my own
>> imagetype into a vtkImageData type and use it.
>>
>> But the way things are going i have to return vtkImageImport objects:
>>
>> std::list<vtkImageImport*> vtkList =
>> isis::adapter::VTKAdapter::makeVtkImageList(imgList.front());
>>
>> which actually was not my goal.
>
> Well, I am not familiar with isis, but now I have an idea of what you
> are trying to do.
>
> First, note that when using STL containers with VTK objects, you must
> always use smart pointers:
>
> std::vector<vtkSmartPointer<vtkImageData> > imageDataVector;
>
> Smart pointers are the only way that the VTK garbage collector can
> track objects that are inside of STL containers.
>
>
> As for the rest, I really don't understand why you cannot make a list
> of vtkImageData objects. Why not do something like this?
>
> For each 3D image:
>
> 1) create a vtkImageImport
> 2) set the vtkImageImport up for your data
> 3) call Update
> 4) use GetOutput() to get the vtkImageData
> 5) add the vtkImageData to a std:list<vtkSmartPointer<vtkImageData> >
> container
> 6) call Delete on the vtkImageImport
> 7) repeat for the next 3D image
>
> I have used a similar technique for importing 4D image to VTK with no
> problem.
>
> David
Ahhh very thanks....i guess i was a little blockheaded :-)
I did not see the simple vtkImage = vtkImporter->GetOutput() command...
thanks a lot!!
cheers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100329/d63d664a/attachment.htm>
More information about the vtkusers
mailing list