0

*library

there is a mostly known library imported from NumPy and imageio import NumPy as np import os import nibabel as nib import imageio // method where I have I write code to convert a nift to png
Method convert a nift(.nii) image to png image def nii_to_image(niifile): filenames = os.listdir(filepath) #read nii folder slice_trans = [] #filename is the path of nii image

  for f in filenames:
                          #Start reading nii files
                   img_path = os.path.join(filepath, f)
                   img = nib.load(img_path) #read nii
                   img_fdata = img.get_fdata()
                   fname = f.replace('.nii','') 
# Remove the nickname of nii
                   img_f_path = os.path.join(imgfile, fname)
                          #Create a folder corresponding to the image of nii
                   if not os.path.exists(img_f_path):
                     os.mkdir(img_f_path) #New folder
          
                          #  to image
                   (x,y,z) = img.shape
                   for i in range(z): #x is the sequence of images
                     silce = img_fdata[i, :, :] #Select which direction the slice can be
                     imageio.imwrite(os.path.join(img_f_path,'{}.png'.format(i)), silce) #Save image
     #main function where fill path was gived
   

main

 if __name__ == '__main__':
             filepath = '/content/drive/MyDrive/sem 8/dataset/pr' 
             imgfile = '/content/drive/MyDrive/sem 8/dataset/propi'
             nii_to_image(filepath)
Sir Mayur
  • 1
  • 1
  • 1

1 Answers1

1

After you load the nifti file as NumPy array as you did, run on every slice (z from img.shape) and then save the array to png.

Make sure that when you run on each slice you save only the existing one (the z_slice_number):

    slice = img_fdata[:, :, z_slice_numer]

And to save this slice you can do as follow (or another way from here):

    matplotlib.image.imsave('name.png', slice)
avivd
  • 76
  • 1
  • 1
  • 6