【图像处理】如何使用matplotlib 库显示灰度图像为自定义颜色
项目场景
我这里有一张名为airplane.jpg的灰度图像灰度图像
使用 matplotlib 库读取并显示:
import matplotlib.pyplot as plt
root="D:\Python\数据集VOC2007\SegmentationClass"
fname=r"\2007_000033"
#带坐标和像素值!!好极了
im = plt.imread('%s/%s.png' % (root, fname))
plt.imshow(im)
plt.show()
显示结果如下:

问题描述
如上图,显示的是紫色的图片,且这是两种不同的紫色。如果不喜欢紫色,并且希望这两种颜色区分更加明显,那么该怎么实现呢?
原因分析
根据官方文档可知:

matplotlib.pyplot.imshow 有一个 cmap 参数,用该参数来控制图像显示色彩。对于 RGB 或 RGBA 图像忽略该参数,即直接显示原图。而对于单通道的灰度图像,默认色彩是viridis(翠绿)。因此,设置 cmap 参数的值即可正确显示灰度图像,可接受的输入类型为字符串或者 Corlormap 对象。
解决方案
import matplotlib.pyplot as plt
plt.imshow(plt.imread('camera.jpg'), cmap='gray')
plt.show()
或:
import matplotlib.pyplot as plt
plt.imshow(plt.imread('camera.jpg'), plt.cm.gray)
plt.show()
在matplotlib中自定义colormap
颜色的定义
在matplotlib中预定义了大量的颜色,如我们熟悉的简写‘b’代表blue,‘r’代表red,‘k’代表black等。除了这些色彩外,其实还有一些预定义的颜色可以参考下面的网页。List of named colors
当然如果这些预定义的颜色也还不满足你的需求,在matplotlib中,任何设置color的地方,都可以使用RGB或者RGBA以及16进制表示颜色。以RGB为例,一般的RGB是三个0-255的数值组成,这里用0-1的小数表示,例如:
color = (1,0,0) #红色
自定义调色板
这里提供一种最简单的方案使用 LinearSegmentedColormap.from_list函数。首先定义一组颜色,如下:
'''自定义灰度图调色板'''
from pylab import *
from matplotlib.colors import LinearSegmentedColormap
clist=[(1,0,0),(0,1,0),(0,0,1),(1,0.5,0),(1,0,0.5),(0.5,1,0)]
newcmp = LinearSegmentedColormap.from_list('chaos',clist)
root="D:\Python\数据集VOC2007\SegmentationClass"
fname=r"\2007_000033"
# 带坐标和像素值!!好极了
im = plt.imread('%s/%s.png' % (root, fname))
print(im[56,322],im[132,151])
plt.imshow(im,cmap=newcmp)
plt.show()
最后看一下效果:

当然这里重点不是看审美。特别是clist中的色彩完全可以用rgb或者是16进制,因此搭配方式会非常地多。
通过上面的了解,基本上可以调用已经存在的色彩,或者通过自定义的方式,实现更加合理的颜色搭配。
参考文献
[1]【Python】如何使用matplotlib 库正确的显示灰度图像
[2]在matplotlib中自定义colormap
【图像处理】如何使用matplotlib 库显示灰度图像为自定义颜色的更多相关文章
- Python图像处理丨OpenCV+Numpy库读取与修改像素
摘要:本篇文章主要讲解 OpenCV+Numpy 图像处理基础知识,包括读取像素和修改像素. 本文分享自华为云社区<[Python图像处理] 二.OpenCV+Numpy库读取与修改像素> ...
- python matplotlib 中文显示参数设置
python matplotlib 中文显示参数设置 方法一:每次编写代码时进行参数设置 #coding:utf-8import matplotlib.pyplot as pltplt.rcParam ...
- (原)python中matplot中获得鼠标点击的位置及显示灰度图像
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pyl ...
- 数据分析与展示——Matplotlib库入门
Matplotlib库入门 Matplotlib库介绍 Matliotlib库是Python优秀的数据可视化第三方库. Matliotlib库的效果见:http://matplotlib.org/ga ...
- 第二周 数据分析之展示 Matplotlib库入门
Matplotlib库介绍:优秀的数据可视化第三方库 使用:Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发,matplotlib.pyplot是绘制各类可视化图形的命令子库 ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- python matplotlib 中文显示乱码设置
python matplotlib 中文显示乱码设置 原因:是matplotlib库中没有中文字体.1 解决方案:1.进入C:\Anaconda64\Lib\site-packages\matplot ...
- 利用python进行简单的图像处理:包括打开,显示以及保存图像
利用python进行简单的图像处理:包括打开,显示以及保存图像 利用PIL处理 PIL(python image library) 是python用于图片处理的package.但目前这个package ...
- 转:使用 python Matplotlib 库 绘图 及 相关问题
使用 python Matplotlib 库绘图 转:http://blog.csdn.net/daniel_ustc/article/details/9714163 Matplotlib ...
- NumPy Matplotlib库
NumPy - Matplotlib Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 ...
随机推荐
- 自然语言处理 Paddle NLP - 基于预训练模型完成实体关系抽取
自然语言处理 Paddle NLP - 信息抽取技术及应用 重点:SOP 图.BCEWithLogitsLoss 基于预训练模型完成实体关系抽取 信息抽取旨在从非结构化自然语言文本中提取结构化知识,如 ...
- [ARM 汇编]高级部分—性能优化与调试—3.4.3 使用模拟器进行调试与测试
在ARM汇编程序开发过程中,使用模拟器(emulator)进行调试和测试是一种非常有效的方法.模拟器可以在不同的处理器上测试代码,帮助我们发现潜在的问题,并提供丰富的调试功能.本节将介绍如何使用QEM ...
- Python运维开发之路《数据类型》
一. python数据类型 python的五大基本数据类型,数字.字符串.列表.元组.字典;其他数据类型,类型type.Null.文件.集合.函数/方法.类.模块. 1.数字 1 ①整型 2 十进制转 ...
- 【干货向】我想试试教会你如何修改Git提交信息
Git是目前IT行业使用率最高的版本控制系统,相信大家在日常工作中也经常使用,每次Git提交都会包含提交信息,常用的包括说明.提交人和提交时间等,此篇文章主要向大家介绍下如何修改这些信息,这些命令在正 ...
- 【Linux】部署Nginx
1.先安装gcc-c++编译器 yum install gcc-c++ yum install -y openssl openssl-devel 2.再安装pcre包 yum install -y p ...
- 河南省CCPC大学生程序设计竞赛赛后总结yy
这次的ccpc总体来说,取得的成绩并不理想,首先是题目解决的数量较少,其次是罚时太多了.开始也是找到了签到题,按理说应该不难拿下,虽然大家解决这道签到题都不是很快,但是我们小队在比赛已经过去两个小时左 ...
- OpenAI API访问速度不佳?试试用Vercel来加速!
前言 众所周知,使用openAI API在国内访问体验并不佳,经常遇到访问较慢或者访问失败的问题.本文着重讲讲怎么解决这个问题,让我们日常开发和使用能够更方便的体验到AI带来的便利 为了帮大家省钱,也 ...
- Cilium系列-11-启用带宽管理器
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- 【go笔记】从安装到helloworld
前言 Go语言也称Golang,google出品,特点在于编程简便的同时并发性能不俗. 环境准备: Go语言版本:1.17.2.安装包下载链接:https://studygolang.com/dl l ...
- SSM登录操作
1.编写实体类 略 2. 写mapper映射文件 通过名字查询 通过ID主键查询... 略 写dao CRUD相关抽象方法 List<Student> getAll(); Student ...