diff --git a/Wrapping/Python/MITKWRAP.i b/Wrapping/Python/MITKWRAP.i index 0ec67c3e37..5351581597 100644 --- a/Wrapping/Python/MITKWRAP.i +++ b/Wrapping/Python/MITKWRAP.i @@ -1,125 +1,120 @@ %begin %{ #ifdef _MSC_VER #define SWIG_PYTHON_INTERPRETER_NO_DEBUG #endif #define SWIG_FILE_WITH_INIT %} %module pyMITK %include "numpy.i" %naturalvar; // All non-primitive types will use const reference typemaps %include #define MITKCORE_EXPORT %{ //#include #include #include #include #include #include // using mitk::DataStorage; // using mitk::IFileReader; // using mitk::IFileWriter; // using mitk::Operation; // using mitk::BaseProperty; // using mitk::BaseGeometry; // using mitk::TimeGeometry; // using mitk::PropertyList; // using mitk::Point3D; // using itk::DataObject; struct TypeDefinitions { static const int ComponentTypeUInt8 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeInt8 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeUInt16 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeInt16 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeUInt32 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeInt32 = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeFloat = (int)mitk::MapPixelType::value>::IOComponentType; static const int ComponentTypeDouble = (int)mitk::MapPixelType::value>::IOComponentType; }; NPY_TYPES MakePixelTypeFromTypeID(int componentTypeID) { switch (componentTypeID) { case TypeDefinitions::ComponentTypeUInt8 : return NPY_USHORT; case TypeDefinitions::ComponentTypeInt8 : return NPY_SHORT; case TypeDefinitions::ComponentTypeUInt16 : return NPY_USHORT; case TypeDefinitions::ComponentTypeInt16 : return NPY_SHORT; case TypeDefinitions::ComponentTypeUInt32 : return NPY_UINT; case TypeDefinitions::ComponentTypeInt32 : return NPY_INT; case TypeDefinitions::ComponentTypeFloat : return NPY_FLOAT; case TypeDefinitions::ComponentTypeDouble : return NPY_DOUBLE; default: return NPY_DOUBLE; } } %} %init %{ import_array(); %} %typemap(out) std::vector { size_t dims = $1.size(); $result = PyArray_SimpleNewFromData(1, (npy_intp*) &(dims), NPY_DOUBLE, (void*)$1.data()); PyArray_ENABLEFLAGS((PyArrayObject*)$result, NPY_ARRAY_OWNDATA); } %typemap(out) mitk::Image::Pointer { unsigned int dim = $1->GetDimension(); - std::cout << "dim: " << dim << std::endl; auto* writeAccess = new mitk::ImageWriteAccessor($1); void* mitkBufferPtr = writeAccess->GetData(); std::cout << "pixel type: " << $1->GetPixelType().GetComponentTypeAsString()<< std::endl; std::cout << "pixel component: " << $1->GetPixelType().GetComponentType()<< std::endl; std::cout << "numpy type: "<< MakePixelTypeFromTypeID((int)$1->GetPixelType().GetComponentType())<< std::endl;; - std::vector size; - for (int i = 0; i < dim; ++i) + std::vector size; + for (unsigned int i = 0; i < dim; ++i) { size.push_back($1->GetDimension(i)); } // if the image is a vector just treat is as another dimension if ($1->GetPixelType().GetNumberOfComponents() > 1) { size.push_back( $1->GetPixelType().GetNumberOfComponents() ); } std::reverse(size.begin(), size.end()); - npy_intp shape[size.size()];//= {112, 122}; - for(int i = 0; i < size.size(); ++i ) - shape[i] = size.data()[i]; - - $result = PyArray_SimpleNewFromData(dim, shape, + $result = PyArray_SimpleNewFromData(dim, size.data(), MakePixelTypeFromTypeID((int)$1->GetPixelType().GetComponentType()), mitkBufferPtr); //PyArray_ENABLEFLAGS((PyArrayObject*)$result, NPY_ARRAY_OWNDATA); //delete writeAccess; Don't delete write access! } %inline { mitk::Image::Pointer GetImageAsNumpy(std::string filename) { auto mitkImage = mitk::IOUtil::Load(filename); return mitkImage; } } //%include //%include %include %pythoncode %{ def GetName(): return 'pyMITK' %} \ No newline at end of file