目录
1、安装
2、读取图像
3、显示图像
4、spectral的特点
5、标签图显示
6、标签、地物融合显示
8、显示三维立方体
9、保存图像
1、安装
pip install spectral -i https://pypi.tuna.tsinghua.edu.cn/simple
讯享网
2、读取图像
讯享网# -*- coding:utf-8 _*- import spectral import os path = r"E:\Users\zt\Desktop\数据\Indian_pines.dat" img = spectral.envi.open(os.path.splitext(path)[0]+'.hdr', path) # ENVI格式 print(img.shape) # 将其转为np数据 img = img.load() # 另一种打开、只需要HDR文件 path = r"G:\数据\数据\-PJ.hdr" img = spectral.open_image(path) # ENVI格式 print(img.shape) # 将其转为np数据 img = img.load()
3、显示图像
# -*- coding:utf-8 _*- import spectral import matplotlib.pyplot as plt import scipy.io as scio path = r"E:\Users\zt\Desktop\数据\Indian_pines.mat" img = scio.loadmat(path) view = spectral.imshow(img["indian_pines"],bands=(29,19,9)) # 显示图像 plt.pause(60)
4、spectral的特点
以下特点是基于在第3部分显示的基础上。
- 图像放大镜
按下z键盘键,将打开变焦窗口,显示图像的放大视图。通过按住ctrl键并在原始窗口中用鼠标左键单击,缩放窗口将显示原始窗口中选中的像素


- 显示像素光谱信息
双击原始图或者缩放窗口中的点,将会显示该点的全波段信息。点可以叠加。

- 显示RGB 数据
讯享网view = imshow(img, (29, 19, 9)) print(view) # 输出 # ImageView object: # Display bands : (29, 19, 9) # Interpolation : <default> # RGB data limits : # R: [2054.0, 6317.0] # G: [2775.0, 7307.0] # B: [3560.0, 7928.0]
imshow(img, (29, 19, 9))中的(29,19,9)就是从光谱中分别抽取的第29,19,9个波段来当替代RGB三个波段。形成伪RGB图像。(原因是谱相机可能避开了可见光部分波段,无法形成真RGB图)
5、标签图显示
# -*- coding:utf-8 _*- import spectral import matplotlib.pyplot as plt import scipy.io as scio path = r"E:\Users\zt\Desktop\数据\Indian_pines_gt.mat" gt = scio.loadmat(path) view = spectral.imshow(classes=gt["indian_pines_gt"]) # 显示标签图像 plt.pause(60)

6、标签、地物融合显示
讯享网# -*- coding:utf-8 _*- import spectral import matplotlib.pyplot as plt import scipy.io as scio path1 = r"E:\Users\zt\Desktop\数据\Indian_pines_gt.mat" path2 = r"E:\Users\zt\Desktop\数据\Indian_pines.mat" gt = scio.loadmat(path1) img = scio.loadmat(path2) view = spectral.imshow(img["indian_pines"], (30, 20, 10), classes=gt["indian_pines_gt"]) view.set_display_mode('overlay') #显示模式为覆盖 view.class_alpha = 0.5 #透明度 plt.pause(60)

8、显示三维立方体
这部分需要安装wx包,openGL包,wx基于 wxPython 模块实现
pip install wxPython -i https://pypi.tuna.tsinghua.edu.cn/simple pip install PyOpenGL -i https://pypi.tuna.tsinghua.edu.cn/simple
安装好了就可以显示了,输入以下代码
讯享网# -*- coding:utf-8 _*- import spectral import matplotlib.pyplot as plt import scipy.io as scio path = r"E:\Users\zt\Desktop\数据\Indian_pines.mat" img = scio.loadmat(path) view = spectral.view_cube(img["indian_pines"], (30, 20, 10)) # 这里也可以不选波段,但是打开会慢很多 img_1 = img["indian_pines"][:,:,19].reshape(145,145) plt.imshow(img_1) plt.pause(60)

这里注意,打开的窗口产生空白画布(未显示立方体),如果是显示器不支持32位深度缓冲区,可以使用如下命令改变缓冲器大小位16位等
spectral.settings.WX_GL_DEPTH_SIZE = 16
9、保存图像
保存索引彩色图像类似于保存 RGB 图像
讯享网# -*- coding:utf-8 _*- import spectral import matplotlib.pyplot as plt import scipy.io as scio path = r"E:\Users\zt\Desktop\数据\Indian_pines.mat" img = scio.loadmat(path) view = spectral.imshow(img["indian_pines"],bands=(29,19,9)) # 显示图像 spectral.save_rgb('rgb.png', img["indian_pines"], [29, 19, 9]) # plt.savefig('rgb.png')

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67770.html