<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">I wrote a Python function to convert a SimpleITK volume to VTK, and it has been working fine for me on OS X and Linux.  A user reported to me that my code was crashing on Windows, and I have been able to re-create the crash.</div>
<div class=""><br class="">
</div>
<div class="">I am using a vtkImageImport object to put a data string into vtkImageData which the function returns.  However when I try and access a scalar in the image, it crashes on Windows.  It seems that the scalar data is being deleted once the function
 is out of scope.</div>
<div class=""><br class="">
</div>
<div class="">You can see my original code here:  <a href="https://github.com/dave3d/dicom2stl/blob/master/sitk2vtk.py" class="">https://github.com/dave3d/dicom2stl/blob/master/sitk2vtk.py</a></div>
<div class=""><br class="">
</div>
<div class="">Here is a simplified version of that code that crashes in the same way.  The crash happens at the last line in the code, where I try and access the first voxel of the image.  The same access that occurs inside the doImport function runs fine.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">#! /usr/bin/env vtkpython</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">import vtk</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">xmax = ymax = zmax = 102</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""># simplified version of the function at
<a href="https://github.com/dave3d/dicom2stl/blob/master/sitk2vtk.py" class="">https://github.com/dave3d/dicom2stl/blob/master/sitk2vtk.py</a></span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""># which was adapted from
<a href="http://www.vtk.org/Wiki/VTK/Examples/Python/vtkWithNumpy" class="">http://www.vtk.org/Wiki/VTK/Examples/Python/vtkWithNumpy</a></span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">#</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">def doImport(test_string):</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter = vtk.vtkImageImport()</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.CopyImportVoidPointer( test_string, len(test_string) )</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.SetDataScalarType(vtk.VTK_CHAR)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.SetNumberOfScalarComponents(1)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.SetDataExtent  (0, xmax-1, 0, ymax-1, 0, zmax-1)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.SetWholeExtent (0, xmax-1, 0, ymax-1, 0, zmax-1)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    dataImporter.Update()</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    vtkvol = dataImporter.GetOutput()</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    print "access inside function"</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    print "vol[0,0,0] =", vtkvol.GetScalarComponentAsFloat(0,0,0,0)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    print "GetScalarPointer() =", vtkvol.GetScalarPointer()</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    return vtkvol</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""># fill a string with '0's</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">test_string = "0" * (xmax*ymax*zmax)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">vol = doImport(test_string)</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">print vol</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">print "access outside function"</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">print "volume object pointer", hex(id(vol))</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">print "GetScalarPointer() =", vol.GetScalarPointer()</span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
</div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">print vol.GetScalarComponentAsFloat(0,0,0,0)</span></div>
</div>
</blockquote>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<br class="">
<br class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<div style="font-family: Helvetica;" class="">And suggestions are greatly appreciated.</div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<span class="">
<div class="">Dave Chen</div>
</span></div>
</div>
<span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="margin: 0px; line-height: normal; font-family: Menlo; min-height: 21px;" class="">
<span style="font-variant-ligatures: no-common-ligatures" class=""></span></div>
</div>
</span><span class="">
<div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">
<div style="margin: 0in 0in 0.0001pt; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255);" class="">
<font face="Consolas" class=""><font color="black" class="">David T. Chen, PhD                      [MSC contractor]</font><font color="black" class=""><u class=""></u><u class=""></u></font></font></div>
<div style="margin: 0in 0in 0.0001pt; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255);" class="">
<font face="Consolas" class=""><font color="black" class=""><a href="mailto:dchen@mail.nih.gov" title="blocked::mailto:dchen@mail.nih.gov" target="_blank" style="color: rgb(17, 85, 204);" class="">mailto:<span style="background-color: rgb(255, 255, 204); color: rgb(34, 34, 34);" class="il">dchen@mail.nih.gov</span></a>  
             </font><a href="http://lhncbc.nlm.nih.gov/personnel/david-chen" class="">http://lhncbc.nlm.nih.gov/personnel/david-chen</a></font></div>
<div style="margin: 0in 0in 0.0001pt; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255);" class="">
<font face="Consolas" class=""><font color="black" class="">phone:<a href="tel:301.435.3264" value="+13014353264" target="_blank" style="color: rgb(17, 85, 204);" class="">301.435.3264</a>                      iphone:<a href="tel:301.524.3174" value="+13015243174" target="_blank" style="color: rgb(17, 85, 204);" class="">301.524.3174</a></font><font color="black" class=""><u class=""></u><u class=""></u></font></font></div>
<div style="margin: 0in 0in 0.0001pt; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255);" class="">
<font face="Consolas" class=""><font color="black" class="">Office of High Performance Computing and Communications</font><font color="black" class=""><u class=""></u><u class=""></u></font></font></div>
<div style="margin: 0in 0in 0.0001pt; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255);" class="">
<font color="black" face="Consolas" class="">National Library of Medicine</font></div>
</div>
</div>
</div>
</span><br class="">
</body>
</html>