image = itk.image_from_array(arr) image2 = type(image).New() image2.Graft(image) del image # Delete image but pixel data should be kept in img2 image = itk.image_from_array(arr + 1) # Fill former memory if wrongly released assert np.array_equal(arr, itk.GetArrayViewFromImage(image2)) image2.SetPixel([0] * image2.GetImageDimension(), 3) # For mem check in dynamic analysis # VNL Vectors v1 = itk.vnl_vector.D(2) v1.fill(1) v_np = itk.GetArrayFromVnlVector(v1) assert v1.get(0) == v_np[0] v_np[0] = 0 assert v1.get(0) != v_np[0] view = itk.GetArrayViewFromVnlVector(v1) assert v1.get(0) == view[0] view[0] = 0 assert v1.get(0) == view[0] # VNL Matrices m1 = itk.vnl_matrix.D(2, 2) m1.fill(1) m_np = itk.GetArrayFromVnlMatrix(m1) assert m1.get(0, 0) == m_np[0, 0] m_np[0, 0] = 0 assert m1.get(0, 0) != m_np[0, 0] view = itk.GetArrayViewFromVnlMatrix(m1) assert m1.get(0, 0) == view[0, 0] view[0, 0] = 0 assert m1.get(0, 0) == view[0, 0] arr = np.zeros([3, 3])
np_copy = itk.GetArrayFromImage(itk_image) #do numpy stuff #convert back to itk, view only, data is not copied itk_np_view = itk.GetImageViewFromArray(np_copy) #convert back to itk, data is not copied itk_np_copy = itk.GetImageFromArray(np_copy) # Save result itk.imwrite(itk_np_view, output_filename) # Vnl matrix[View] from array arr = np.zeros([3, 3], np.uint8) matrix_view = itk.GetVnlMatrixViewFromArray(arr) matrix = itk.GetVnlMatrixFromArray(arr) # Array[View] from Vnl matrix arr_view = itk.GetArrayViewFromVnlMatrix(matrix) arr = itk.GetArrayFromVnlMatrix(matrix) # Vnl vector[View] from array vec = np.zeros([3], np.uint8) vnl_vector_view = itk.GetVnlVectorViewFromArray(vec) vnl_vector = itk.GetVnlVectorFromArray(vec) # Array[View] from Vnl vector vec_view = itk.GetArrayViewFromVnlVector(vnl_vector) vec = itk.GetArrayFromVnlVector(vnl_vector)