Michael :<br><br>Upon return from your functiion,&nbsp; the smart pointer goes out of scope and will cleanup its resources, which includes the generated output, since noone is holding a reference to it. You could rephrase that method as below, with a shallow copy. The shallow copy will cause the &quot;output&quot; to hold a reference to the output of the converter and prevent it from vanishing upon return.
<br><br>void itk2vtk(ReaderType3D::OutputImageType::Pointer image, vtkImageData *output) <br>{<br>&nbsp;&nbsp;&nbsp; // --- Same stuff as you have below until converter-&gt;Update() ---- <br>&nbsp;&nbsp;&nbsp; ....<br>&nbsp;&nbsp;&nbsp; converter-&gt;Update();<br>&nbsp;&nbsp;&nbsp; output-&gt;ShallowCopy(converter-&gt;GetOutput());
<br>}<br><br><br>-- <br>Karthik Krishnan<br>R&amp;D Engineer,<br>Kitware Inc.<br><div><span class="gmail_quote">On 8/22/07, <b class="gmail_sendername">Michael Schildt</b> &lt;<a href="mailto:michael.schildt@ifn-magdeburg.de">
michael.schildt@ifn-magdeburg.de</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello!<br><br>I Want to display data from ITK in VTK but I have trouble to return a
<br>VTK object from a function to the main function. I call the function<br>with a valid 3d ITK image. The y-axis is flipped to account for the<br>different coordinate systems of ITK and VTK. Then converted via<br>ImageToVTKImageFilter. It works fine. I want to return the generated VTK
<br>image. It is valid up to the return statement. After that it seems to be<br>deleted. How can I tell the program not to delete this object? Do i have<br>to return the object instead of its pointer?<br><br>Function in question is (vtkImage is valid until return, in main the
<br>return value is invalid):<br><br>&nbsp;&nbsp;vtkImageData* itk2vtk(ReaderType3D::OutputImageType::Pointer image) {<br><br>itk::FlipImageFilter&lt;ReaderType3D::OutputImageType&gt;::FlipAxesArrayType<br>SourceAxes;<br>&nbsp;&nbsp;&nbsp;&nbsp;SourceAxes[0] = false;
<br>&nbsp;&nbsp;&nbsp;&nbsp;SourceAxes[1] = true;<br>&nbsp;&nbsp;&nbsp;&nbsp;SourceAxes[2] = false;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;itk::FlipImageFilter&lt;ReaderType3D::OutputImageType&gt;::Pointer flip<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= itk::FlipImageFilter&lt;ReaderType3D::OutputImageType&gt;::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;flip-&gt;SetFlipAxes(SourceAxes);<br>&nbsp;&nbsp;&nbsp;&nbsp;flip-&gt;SetInput(image);<br>&nbsp;&nbsp;&nbsp;&nbsp;flip-&gt;Update();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;itk::ImageToVTKImageFilter&lt;ReaderType3D::OutputImageType&gt;::Pointer<br>converter<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= itk::ImageToVTKImageFilter&lt;ReaderType3D::OutputImageType&gt;::New();
<br>&nbsp;&nbsp;&nbsp;&nbsp;converter-&gt;SetInput(flip-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp;&nbsp;converter-&gt;Update();<br>&nbsp;&nbsp;&nbsp;&nbsp;vtkImageData *vtkImage = converter-&gt;GetOutput();<br>&nbsp;&nbsp;&nbsp;&nbsp;return vtkImage;<br>&nbsp;&nbsp;}<br><br>Greetings,<br>&nbsp;&nbsp;&nbsp;&nbsp;Michael Schildt<br><br>
<br>_______________________________________________<br>This is the private VTK discussion list.<br>Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ
</a><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br></blockquote></div>