Je veux charger des données hyperspectrales par pixel dans un tableau et réécrire ce pixel en utilisant Python 3.5. Je veux calculer quelque chose avec l'information spectrale de ce Pixel.Comment charger itérativement read_pixel et écrire dans le fichier envi; python3
J'ai essayé deux façons différentes et les deux ne fonctionnent pas comme je le veux. Tout d'abord, j'ai mis à jour le paquet spectral depuis la dernière version a été déclaré ne pas travailler avec itérativement envi.save_image mais mon approche ne fonctionne pas. Deuxièmement mes deux approches ne sont pas très bonnes avec mon double pour boucle - Je sais - Si quelqu'un pouvait m'aider s'il vous plaît sur mon problème.
1er:
myfile=open_image('input.hdr')
for i in range(0,myfile.shape[0]):
for j in range(0,myfile.shape[1]):
mypixel = (myfile.read_pixel(i,j))
envi.save_image('output.hdr', mypixel, dtype=np.int16)
1er exemple ne sauve pas l'image me donne plutôt le code d'erreur
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 699, in runfile
execfile(filename, namespace)
File "/usr/local/lib/python3.5/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 88, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "/dtc/Python/Masking.py", line 132, in <module>
envi.save_image('test.hdr', mypixel, dtype=np.int16)#, metadata=myfile.metadata)
File "/usr/local/lib/python3.5/site-packages/spectral/io/envi.py", line 415, in save_image
data, metadata = _prepared_data_and_metadata(hdr_file, image, **kwargs)
File "/usr/local/lib/python3.5/site-packages/spectral/io/envi.py", line 568, in _prepared_data_and_metadata
add_image_info_to_metadata(image, metadata)
File "/usr/local/lib/python3.5/site-packages/spectral/io/envi.py", line 613, in add_image_info_to_metadata
metadata['samples'] = image.shape[1]
IndexError: tuple index out of range
2ème:
myfile=open_image('input.hdr')
envi.create_image('test.hdr',ext='.bip', interleave='bip',dtype='h',force=True,metadata=myfile.metadata)
open('test.bip', 'w').close() # empties the created file
file = open('test.bip', 'ab')#ab #opens the created file for appending the new bands
for i in range(0,myfile.shape[0]):
for j in range(0,myfile.shape[1]):
mypixel = (myfile.read_pixel(i,j))
file.write(mypixel)
file.close()
myfile.close()
Le deuxième exemple enregistre l'image mais les magasins le Pixel dans un ordre différent et salit mon image.
Nous vous remercions de votre réponse. J'ai essayé ceci et ai également obtenu cet indice de collègues. Cela a fonctionné et était plus rapide à la fin. Ne m'a toujours pas donné les résultats que j'attendais. La sortie est une image avec seulement zéro donnée. – AnneR