чтение файла .img envi со спектральным питоном

Я пытаюсь открыть файл envi .img, и есть файл .hdr с таким же именем. В файле .img есть два изображения, которые я могу прочитать, используя следующий код.

from spectral import *
img = open_image('LC08_L1TP_029029_20130330_20170310_01_T1_sensor_B05.img')

И свойства img (файл BSQ) показаны на следующем рисунке.

In[352] img

Out[352]: 

Data Source:   '.\LC08_L1TP_029029_20130330_20170310_01_T1_sensor_B05.img'
# Rows:           7311
# Samples:        7371
# Bands:             2
Interleave:        BSQ
Quantization:  16 bits
Data format:     int16

Что я хочу извлечь эти два изображения из img. Но когда я пытаюсь с

img[:,:,1]

и это дает мне массив размера (7311,7371,1), но все значения внутри массива равны нулю, но я знаю, что они должны быть ненулевыми значениями.

Мой вопрос: как я могу извлечь эти два изображения из файла BSQ?


person M. M. Farhad    schedule 18.07.2017    source источник


Ответы (2)


Вы можете попробовать этот вариант:

from spectral import * 

img = open_image('LC08_L1TP_029029_20130330_20170310_01_T1_sensor_B05.img') 
img_open = img.open_memmap(writeable = True) 
img_band = img_open[:,:,1] 
envi.save_image('new_image.bsq', ext='bsq', interleave = 'BSQ')

or

Для этого варианта необходимо открыть изображение файлом hdr. Но он должен работать как предыдущий вариант.

from spectral import *
img = envi.open('<name of hdr file>') 
img_open = img.open_memmap(writeable = True) 
img_band = img_open[:,:,1] 
envi.save_image('new_image.bsq', ext='bsq', interleave = 'BSQ')
person Grixus    schedule 13.02.2018

Вы можете прочитать изображение envi из файла hdr с таким же именем.

import numpy as np
from spectral import*    
img1=open_image("<path to file.hdr>").read_band(0)
img2=open_image("<path to file.hdr>").read_band(1)

теперь вы извлекли битовые полосы в img1 и img2, и вы можете сохранить их или отобразить по своему усмотрению.

person fruitspunchsamurai    schedule 29.01.2019