项目场景

我这里有一张名为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 库显示灰度图像为自定义颜色的更多相关文章

  1. Python图像处理丨OpenCV+Numpy库读取与修改像素

    摘要:本篇文章主要讲解 OpenCV+Numpy 图像处理基础知识,包括读取像素和修改像素. 本文分享自华为云社区<[Python图像处理] 二.OpenCV+Numpy库读取与修改像素> ...

  2. python matplotlib 中文显示参数设置

    python matplotlib 中文显示参数设置 方法一:每次编写代码时进行参数设置 #coding:utf-8import matplotlib.pyplot as pltplt.rcParam ...

  3. (原)python中matplot中获得鼠标点击的位置及显示灰度图像

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pyl ...

  4. 数据分析与展示——Matplotlib库入门

    Matplotlib库入门 Matplotlib库介绍 Matliotlib库是Python优秀的数据可视化第三方库. Matliotlib库的效果见:http://matplotlib.org/ga ...

  5. 第二周 数据分析之展示 Matplotlib库入门

    Matplotlib库介绍:优秀的数据可视化第三方库 使用:Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发,matplotlib.pyplot是绘制各类可视化图形的命令子库 ...

  6. numpy, matplotlib库学习笔记

    Numpy库学习笔记: 1.array()   创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...

  7. python matplotlib 中文显示乱码设置

    python matplotlib 中文显示乱码设置 原因:是matplotlib库中没有中文字体.1 解决方案:1.进入C:\Anaconda64\Lib\site-packages\matplot ...

  8. 利用python进行简单的图像处理:包括打开,显示以及保存图像

    利用python进行简单的图像处理:包括打开,显示以及保存图像 利用PIL处理 PIL(python image library) 是python用于图片处理的package.但目前这个package ...

  9. 转:使用 python Matplotlib 库 绘图 及 相关问题

     使用 python Matplotlib 库绘图      转:http://blog.csdn.net/daniel_ustc/article/details/9714163 Matplotlib ...

  10. NumPy Matplotlib库

    NumPy - Matplotlib Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 ...

随机推荐

  1. Mysql基础篇(一)之DDL、DML、DQL、DCL

    一. SQL语句分类 SQL语句,根据其功能,主要分为四类:DDL.DML.DQL.DCL. 分类 全称 说明 DDL Data Definition Language 数据定义语言,用来定义数据对象 ...

  2. 强化学习实践:Policy Gradient-Cart pole游戏展示

    摘要:智能体 agent 在环境 environment 中学习,根据环境的状态 state(或观测到的 observation),执行动作 action,并根据环境的反馈 reward(奖励)来指导 ...

  3. T-star高校挑战赛部分wp

    web-1签到 checkin还是很基础的 网站上传存在js检测,禁用js即可上传 写PHP一句话木马上传,http://588f25a5.yunyansec.com/upload/test.php连 ...

  4. 如何将Maven项目快速改造成一个java web项目(方式一)

    因为实际需要,需要将一个maven项目改造成原生的java-web项目,写这边博客 来记录整个改造的过程.原始的maven项目,使用IDEA打开后,目录结构如下所示 直接通过文件夹查看项目结果如下 首 ...

  5. 2021-6-16 TcpIp

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 一个批处理,解决你重装python第三方模块的烦恼~(1.0版本)

    @echo offpip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepython -m pip insta ...

  7. 【游戏开发笔记】编程篇_C#面向对象{上}

    @ 目录 1.变量和表达式 1.1注释 1.2C#控制台程序基本结构 1.3变量(从存储长度来看) 1.4变量的命名 1.5字面值 1.6运算符 2流程控制 2.1分支 2.2循环 3变量知识拓展 3 ...

  8. 用 Tensorflow.js 做了一个动漫分类的功能(二)

    前言: 前面已经通过采集拿到了图片,并且也手动对图片做了标注.接下来就要通过 Tensorflow.js 基于 mobileNet 训练模型,最后就可以实现在采集中对图片进行自动分类了. 这种功能在应 ...

  9. DDD项目落地之充血模型实践

    背景: 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率.提升可维护性: 1.DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务( ...

  10. 基于Pair-wise和CrossEncoder训练单塔模型

    本文分享自华为云社区<语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型>,作者: 汀丶. 文本匹配任务数据每一 ...