Я хочу загрузить гиперспектральные данные на пиксель в массив и снова записать этот пиксель с помощью Python 3.5. Я хочу рассчитать что-то со спектральной информацией этого пикселя.Как итеративно загружать read_pixel и записывать в файл envi; python3
Я пробовал два разных способа, и оба не работают так, как я хочу.
Прежде всего, я обновил спектральный пакет, так как последняя версия была заявлена не для работы с итерационным envi.save_image, но мой подход не работает. Во-вторых, мои подходы оба не очень хороши с моей двойной петлей - я знаю - Если кто-нибудь может помочь мне в моей проблеме.
первый:
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)
первый пример не сохранить изображение, а дает мне код ошибки
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-й:
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()
Второй пример сохраняет образ, но магазины Pixel в другом порядке и испортил мой образ.
Благодарим вас за ответ. Я пробовал это, а также получил этот намек от коллег. В итоге это работало и было быстрее. Все еще не дал мне ожидаемых результатов. Выход представляет собой изображение с нулевыми данными. – AnneR