<div>Hi Robert. Thank you. I also have now done more or less like that. I have a slight problem however, and this is when i try to transfer data from the vnl_matrix to a vtkImage. I do the following:</div>
<div>&nbsp;</div>
<p>vtkImageData* importData(SDMdatatype *data1,int *dims){<br>&nbsp;vtkImageImport *importer = vtkImageImport::New();<br>&nbsp;importer-&gt;SetDataScalarTypeToFloat();<br>&nbsp;importer-&gt;SetDataOrigin(0,0,0);<br>&nbsp;importer-&gt;SetImportVoidPointer(data1);
<br>&nbsp;<br>&nbsp;importer-&gt;SetWholeExtent(0,dims[0]-1,0,dims[1]-1,0,dims[2]-1);//If not 3D image set 3D extent = 0.<br>&nbsp;importer-&gt;SetDataExtentToWholeExtent();</p>
<p>&nbsp;importer-&gt;Update();</p>
<p>&nbsp;vtkImageData *img=importer-&gt;GetOutput();<br>&nbsp;img-&gt;Update();<br>&nbsp;return img;<br>}</p>
<div>I do the following when calling this function:</div>
<div>&nbsp;</div>
<div>vtkImageData *Temporopolar_region_left_data= importData(*(meanShape.extract(N,1, 0*N,0).data_array()),D);<br><br>where meanShape is my vnl_matrix</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>I know that the matrix meanShape contains correct data, but when i have called the importData data function, and on the returned vtkImageData object call the function </div>
<div>&nbsp;</div>
<div>SDMdatatype* a = (SDMdatatype*)Temporopolar_region_left_data-&gt;GetScalarPointer();</div>
<div>&nbsp;</div>
<div>a null pointer is returned. Am I missing something ?</div>
<div>Thank you for your help.</div>
<div>Regards</div>
<div>&nbsp;</div>
<div><span class="gmail_quote">2007/1/12, Atwood, Robert C &lt;<a href="mailto:r.atwood@imperial.ac.uk">r.atwood@imperial.ac.uk</a>&gt;:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Here&#39;s how I&#39;ve done it (details of inputting the matrix data omitted<br>since it&#39;s all in &#39;c&#39; rather than &#39;c++&#39;)
<br><br>#include &lt;vnl/vnl_matrix_fixed.h&gt;<br>#include &lt;vnl/vnl_matrix.h&gt;<br>#include &lt;vnl/vnl_vector.h&gt;<br>#include &lt;vnl/algo/vnl_symmetric_eigensystem.h&gt;<br>#include &lt;vnl/algo/vnl_svd.h&gt;<br>
#include &lt;stdio.h&gt;<br>....<br><br>typedef vnl_matrix&lt;double&gt; Mx;<br>void read_data (FILE * datfile,double ** data,unsigned int * r, unsigned<br>int *c);<br><br>....<br>&nbsp;&nbsp;Mx *p;<br>&nbsp;&nbsp;double * data;<br>&nbsp;&nbsp;unsigned int r,c;
<br>&nbsp;&nbsp;FILE * datfile;<br><br>....<br>/*call routine that gets values of r and c, and allocates and fills data<br>with rxc values&nbsp;&nbsp;*/<br>&nbsp;&nbsp;read_data(datfile,&amp;data, &amp;r, &amp;c);<br><br>&nbsp;&nbsp;p=new Mx(r,c);<br>&nbsp;&nbsp;p-&gt;set(data);
<br><br><br><br>&gt; -----Original Message-----<br>&gt; From: insight-users-bounces+r.atwood=<a href="mailto:imperial.ac.uk@itk.org">imperial.ac.uk@itk.org</a><br>&gt; [mailto:<a href="mailto:insight-users-bounces+r.atwood=imperial.ac.uk@itk.org">
insight-users-bounces+r.atwood=imperial.ac.uk@itk.org</a>]<br>&gt;&nbsp;&nbsp;On Behalf Of Arne Hansen<br>&gt; Sent: 12 January 2007 08:58<br>&gt; To: insight-users<br>&gt; Subject: [Insight-users] Using an existing datapointer for vnl_matrix
<br>&gt;<br>&gt; Hello. I have loaded a matrix from a binary file using<br>&gt; standard c++ fstream. I allocated the memory using new, and<br>&gt; have a pointer pointing at it. Now i want to use this data in<br>&gt; a vnl-matrix. How can i do that?
<br>&gt;<br>&gt; If there is an example i would appreciate it.<br>&gt;<br>&gt; Thank you<br>&gt;<br></blockquote></div><br>