⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vtkimageimportfromarray.py

📁 a very goog book
💻 PY
字号:
"""vtkImageImportFromArray: a NumPy front-end to vtkImageImportLoad a Numeric Python array into a VTK image.To use this class, you must have the LLNL Numeric Python distribution(http://numpy.sf.net)Methods:  GetOutput() -- connect to VTK image pipeline  SetArray()  -- set the array to load in  Convert python 'Int' to VTK_UNSIGNED_SHORT:(python doesn't support unsigned short, so this might be necessary)  SetConvertIntToUnsignedShort(yesno)  ConvertIntToUnsignedShortOn()  ConvertIntToUnsignedShortOff()Methods from vtkImageImport: (if you don't set these, sensible defaults will be used)  SetDataExtent()  SetDataSpacing()  SetDataOrigin()"""import Numericfrom vtk import vtkImageImportfrom vtkConstants import *_NEW_NUMERIC = 0try:    val = float(Numeric.__version__)except ValueError:    _NEW_NUMERIC = 0else:    if val > 20.0:        _NEW_NUMERIC = 1    else:        _NEW_NUMERIC = 0class vtkImageImportFromArray:    def __init__(self):        self.__import = vtkImageImport()        self.__ConvertIntToUnsignedShort = 0        self.__Array = None    # type dictionary: note that python doesn't support    # unsigned integers properly!    __typeDict = {'c':VTK_UNSIGNED_CHAR,                  'b':VTK_UNSIGNED_CHAR,                  '1':VTK_CHAR,                  's':VTK_SHORT,                  'i':VTK_INT,                  'l':VTK_LONG,                  'f':VTK_FLOAT,                  'd':VTK_DOUBLE,                  'F':VTK_FLOAT,                  'D':VTK_DOUBLE }    __sizeDict = { VTK_CHAR:1,                   VTK_UNSIGNED_CHAR:1,                   VTK_SHORT:2,                   VTK_UNSIGNED_SHORT:2,                   VTK_INT:4,                   VTK_FLOAT:4,                   VTK_DOUBLE:8 }    # convert 'Int32' to 'unsigned short'    def SetConvertIntToUnsignedShort(self,yesno):        self.__ConvertIntToUnsignedShort = yesno    def GetConvertIntToUnsignedShort(self):        return self.__ConvertIntToUnsignedShort        def ConvertIntToUnsignedShortOn(self):        self.__ConvertIntToUnsignedShort = 1    def ConvertIntToUnsignedShortOff(self):        self.__ConvertIntToUnsignedShort = 0    # get the output    def GetOutput(self):        return self.__import.GetOutput()    # import an array    def SetArray(self,imArray):        self.__Array = imArray        numComponents = 1        dim = imArray.shape        if (len(dim) == 4):            numComponents = dim[3]            dim = (dim[0],dim[1],dim[2])                    type = self.__typeDict[imArray.typecode()]        if (imArray.typecode() == 'F' or imArray.typecode == 'D'):            numComponents = numComponents * 2        if (self.__ConvertIntToUnsignedShort and imArray.typecode() == 'i'):            if _NEW_NUMERIC:                imTmpArr = imArray.astype(Numeric.Int16).flat            else:                imTmpArr = imArray.astype(Numeric.Int16).tostring()            type = VTK_UNSIGNED_SHORT        else:            if _NEW_NUMERIC:                imTmpArr = imArray.flat            else:                imTmpArr = imArray.tostring()        size = len(imTmpArr)*self.__sizeDict[type]        self.__import.CopyImportVoidPointer(imTmpArr, size)        self.__import.SetDataScalarType(type)        self.__import.SetNumberOfScalarComponents(numComponents)        extent = self.__import.GetDataExtent()        self.__import.SetDataExtent(extent[0],extent[0]+dim[2]-1,                                    extent[2],extent[2]+dim[1]-1,                                    extent[4],extent[4]+dim[0]-1)        self.__import.SetWholeExtent(extent[0],extent[0]+dim[2]-1,                                     extent[2],extent[2]+dim[1]-1,                                     extent[4],extent[4]+dim[0]-1)    def GetArray(self):        return self.__Array            # a whole bunch of methods copied from vtkImageImport    def SetDataExtent(self,extent):        self.__import.SetDataExtent(extent)    def GetDataExtent(self):        return self.__import.GetDataExtent()        def SetDataSpacing(self,spacing):        self.__import.SetDataSpacing(spacing)    def GetDataSpacing(self):        return self.__import.GetDataSpacing()        def SetDataOrigin(self,origin):        self.__import.SetDataOrigin(origin)    def GetDataOrigin(self):        return self.__import.GetDataOrigin()    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -