首页 > 其他分享 >【图像处理】使用matplotlib库显示灰度图像为自定义颜色(2)

【图像处理】使用matplotlib库显示灰度图像为自定义颜色(2)

时间:2024-05-13 22:30:11浏览次数:32  
标签:plt facies 自定义 img matplotlib 灰度 path import os

在下面的代码中,facies_img的值只有[0,1,2]表明图像是灰度图像。通过下面的代码可以让图像显示为彩色图像

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from PIL import Image
import os
import random
import numpy as np

# 路径设置
data_dir = 'dataset'
facies_path = os.path.join(data_dir, 'faciesData')
facies_files = os.listdir(facies_path)

# 生成一个随机数来选择文件
file_index = random.randint(1, 32640)  # 假设文件名是从1到32640
facies_img = Image.open(os.path.join(facies_path, facies_files[file_index]))
# 查找图像中所有独特的值
unique_values = np.unique(facies_img) #[0,1,2]

plt.imshow(facies_img)
plt.show()

显示的图像如下所示:
image


想显示自定义的颜色映射可以使用下面的代码:

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from PIL import Image
import os
import random
import numpy as np

# 路径设置
data_dir = 'dataset'
facies_path = os.path.join(data_dir, 'faciesData')
facies_files = os.listdir(facies_path)

# 生成一个随机数来选择文件
file_index = random.randint(1, 32640)  # 假设文件名是从1到32640
facies_img = Image.open(os.path.join(facies_path, facies_files[file_index]))
# 查找图像中所有独特的值
unique_values = np.unique(facies_img) #[0,1,2]

# 定义自定义颜色映射
colors = ['white', 'red', 'yellow']  # 分别为0, 1, 2指定颜色
cmap = mcolors.ListedColormap(colors)
bounds = [-1, 0.9, 1.1, 2.1]  # 定义边界,0-1之间的值使用第一个颜色,1-2使用第二个,依此类推
norm = mcolors.BoundaryNorm(bounds, cmap.N)

plt.imshow(facies_img, cmap=cmap, norm=norm)
# plt.imshow(facies_img)
plt.show()

image
成功显示为想要的颜色

标签:plt,facies,自定义,img,matplotlib,灰度,path,import,os
From: https://www.cnblogs.com/beluga/p/18190210

相关文章

  • apisix~自定义插件的部署
    参考https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-luahttps://apisix.apache.org/docs/apisix/next/plugin-develop/https://apisix.apache.org/docs/apisix/next/plugins/prometheus/https://apisix.apache.org/blog/2022/02/16/file-logge......
  • 简单的自定义表单控件
    核心为onChang事件,赋值需要关注value <Form.Itemname='position'label="位置"style={itemStyle}><InputXYZ/></Form.It......
  • vite 自定义插件获取打包时长
    //vite.config.ts//打包时间functionbuildTimePlugin(mode){console.log('mode:>>',mode)return{name:'build-time',//在buildStart阶段设置初始值buildStart(){this.startTime=Date.now()if(mode!==&......
  • uniapp自定义input清除按钮
    uniapp小程序,引入uni-ui库后,观察到其他组件,有的默认有清除按钮,比如: 在写内置组件input框,查看文档没有此属性,官方示例在这里:https://github.com/dcloudio/hello-uniapp/blob/master/pages/component/input/input.nvue 还需自行复制对应的css,试了下效果不太好。我需要和级联......
  • JVM自定义加类加载器
    在JVM类加载器分类中提及JVM自带的加载器无法满足实际业务需求时,可以自定义加载器。那一般什么情况下需要自定义加载器呢?隔离加载类:模块隔离——把类加载到不同的应用选项中,比如Tomcat类加载器。修改类加载方式:平台提供了三类加载器除必须加载的类加载器,可以根据实际情况......
  • JAVA Comparator 自定义排序 源码分析
    对于一个数组来说如果我们想要从大到小排序一般会这么写Integer[]nums={1,2,3};Arrays.sort(nums,newComparator<Integer>(){@Overridepublicintcompare(Integera,Integerb){returnb-a;}});......
  • Go语言异常处理:自定义错误【errors.New+panic】
    程序本身抛出的异常信息不是太友好,我们可以自定义错误或者异常的信息,需要使用errors包中的New函数来包装一下异常或错误信息;在使用内置函数panic(err),把异常信息后面的程序执行终止掉,因为再执行后面的程序也没有意义了。 packagemainimport"fmt"import"errors"funcma......
  • Tomcat中为什么要使用自定义类加载器
    Tomcat使用自定义类加载器主要是基于以下几个关键原因:1.应用隔离:Tomcat作为一个Web容器,能够同时部署和运行多个Web应用程序。每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat为每个Web应用提供了一个独立的类加载器实例,即`WebAppC......
  • Tomcat中为什么要使用自定义类加载器
    Tomcat使用自定义类加载器主要是基于以下几个关键原因:1.应用隔离:Tomcat作为一个Web容器,能够同时部署和运行多个Web应用程序。每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat为每个Web应用提供了一个独立的类加载器实例,即`WebAppC......
  • SQL Server实战七:自定义数据类型、标量值、内嵌表值、多语句表值函数的操作
      本文介绍基于MicrosoftSQLServer软件,实现数据库用户自定义数据类型的创建、使用与删除,以及标量值、内嵌表值、多语句表值函数等用户定义函数的创建、使用、删除方法。目录1用SQL语句创建一个用户定义的数据类型Idnum2使用Idnum创建学生表STUDENT与教师表TEACHER3交互式......