spectral模块一些用法

spectral模块一些用法目录 1 安装 2 读取图像 3 显示图像 4 spectral 的特点 5 标签图显示 6 标签 地物融合显示 8 显示三维立方体 9 保存图像 1 安装 pip install spectral i https pypi tuna tsinghua edu cn simple 2 读取图像

大家好,我是讯享网,很高兴认识大家。

目录

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')

小讯
上一篇 2025-02-13 14:35
下一篇 2025-02-11 23:23

相关推荐

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