引言

 matplotlib中的imshow()函数不能自动显示灰度图像,这一点应该是众所周知的,需要调用cmap=“gray"以进行设置,但是cmap="gray"实际上并不是如opencv中的imshow函数一样将单通道图显示为灰度图,私以为是引入了灰度图的灰度量化概念,但并不直接对应灰度,证明见正文。

一、测试

 设置一全1.0的图像(全白),和一全白背景叠加黑色条柱的图像,使用plt.imshow()显示。
代码:

import matplotlib.pyplot as plt
import numpy as np
white=np.ones((100,100),dtype=float)
bar=np.ones((100,100),dtype=float)
bar[40:50,:]=0
plt.figure(1)
plt.subplot(211)
plt.imshow(white,cmap='gray')
plt.title('white map')
plt.subplot(212)
plt.imshow(bar,cmap='gray')
plt.title('black bar')

结果为:

由此可以发现在值全为1.0时,图像显示为黑色,那么是否是dtype的原因呢?测试常用的uint8情况下,亮度为恒定值,显示几何。
代码为:

white1=np.ones((100,100),dtype=np.uint8)*255
white2=np.ones((100,100),dtype=np.uint8)*128
plt.figure((2))
plt.subplot(211)
plt.imshow(white1,cmap='gray')
plt.title('white1')
plt.subplot(212)
plt.imshow(white2,cmap='gray')
plt.title('white2')

结果为:

由此可以确定,这一显示“异常”与数据类型无关 。

二、解决方案

  使用vmin,vmax参数指定灰度范围,或者设定cmap为gray_r以使得灰度范围反转,后者只适用于想显示白色背景。
代码:

white1=np.ones((100,100),dtype=np.uint8)*255
white2=np.ones((100,100),dtype=np.uint8)*128
plt.figure((2))
plt.subplot(211)
plt.imshow(white1,cmap='gray_r')
plt.title('white1')
plt.subplot(212)
plt.imshow(white2,cmap='gray',vmin=0,vmax=255)
plt.title('white2')

结果:

Matplotlib显示灰度图相关推荐

  1. matplotlib显示灰度图为紫色的问题

    import numpy as np import matplotlib.pyplot as plta = np.zeros((3,5)) plt.imshow(a) 得到的图确实下面这样的,而不是黑 ...

  2. plt显示灰度图出现Invalid shape问题

    问题背景:tensorflow2.0.0中的Dataset转换为numpy,利用matplotlib进行显示.data的维度为[4, 256, 256, 1], def show(ds, num=2) ...

  3. OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序

    OpenCV+Python 彩色图片的 BGR.灰度图.HSV分量图显示的程序 介绍 OpenCV+Python 使用openCV中的split()函数和 cvtColor()函数提取一张彩色图片的B ...

  4. python matplotlib 显示opencv的图像

    python matplotlib 显示opencv的图像 首先需要import import cv2 import numpy as np from matplotlib import pyplot ...

  5. numpy 用于图像处理(灰度图、转置、通道分离、图像扩展、水平镜像、水平翻转、调换x,y坐标、添加mask、随机打乱顺序、交换通道)

    目录 numpy 用于图像处理 1. 转换为灰度图 2. 转置 3. 画出三个通道的彩图 4. 图像扩展 5. 水平镜像 --- 交换行 6. 水平翻转 --- 交换列 7. 调换x,y坐标 8. 添 ...

  6. Android提高十六篇之使用NDK把彩图转换灰度图

    在Android上使用JAVA实现彩图转换为灰度图,跟J2ME上的实现类似,不过遇到频繁地转换或者是大图转换时,就必须使用NDK来提高速度了.本文主要通过JAVA和NDK这两种方式来分别实现彩图转换为 ...

  7. 【OpenCV】将RGB图像转为灰度图

    基本思路: 1.  输入RGB(彩色)图像 2.  处理图像 3.  输出GRAY(灰度)图像 这里将处理图像过程单独写成一个函数,供主函数调用 1 void RGB2GRAY(IplImage* s ...

  8. android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法

    一般而言在Android上使用JAVA实现彩图转换为灰度图,与J2ME上的实现方法类似,不过遇到频繁地转换或者是大图转换时,就必须使用NDK来提高速度了.本文主要通过JAVA和NDK这两种方式来分别实 ...

  9. opencv生成灰度图并保存

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  10. python灰度图cv2到plt变颜色_python中plt.imshow与cv2.imshow显示颜色问题

    python中plt.imshow与cv2.imshow显示颜色问题 在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象. 这是因为:opencv的接口使用BGR ...

最新文章

  1. Android RSA加密对象数据
  2. linux 下修改日期和时间
  3. ApacheServerStatus开启
  4. java软件网络工程师面试题_170道Java工程师面试题,你敢挑战吗?
  5. foobar2000 ios版怎么添加音乐_抖音怎么设置说完话后再放音乐 视频先配音后半段添加背景音乐...
  6. 展示 测速_科技产品 | 人工智能amp;科技展示厅——助力高校人工智能学科建设及产业人才培养...
  7. java 获取光标_如何在java中使用Windows API获取当前鼠标光标类型?
  8. Linux下查看出口IP
  9. 实时监听input输入框value的变化:
  10. asmcmd:Connected to an idle instance.
  11. PAT-乙级-1009. *说反话 (20)
  12. ActivityMQ使用
  13. html顺序播放mp3,完美:按顺序播放mp3的方法是什么?如何更改U盘中歌曲的播放顺序...
  14. word文档怎么找回误删的文件_Word文档删除了怎么恢复?Word误删除恢复技巧
  15. 【Love2d从青铜到王者】第十篇:Love2d之类和类的继承(Classes And Inheritance)
  16. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...
  17. 光猫桥接后宽带降速问题解决
  18. tesla 显卡在ubuntu下安装显卡驱动log in loop 不能登陆的问题
  19. @value 读取yml没有读到
  20. 小米2019秋招软件开发笔试题A选择部分解析

热门文章

  1. 指纹的对比分析系统概述
  2. CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
  3. 新闻 - 被遗忘的“活化石”:BBS没落中求生
  4. 身份证验证程序(一)
  5. 大一计算机网络技术实训总结,大一计算机网络技术实训报告精选
  6. Project组合项目案例分享
  7. 计算机课玩游戏检讨书,上微机课玩游戏检讨书.doc
  8. java vo层_JAVA3个数据层(pojo,dto,vo)、dao层、services层、controller层解释
  9. win10计算机禁用用户账户控制,Win10系统用户帐户控制提示怎么取消 关闭用户账户控制的3种方法...
  10. 家庭单台计算机连接宽带步骤,两台win7电脑共用一个宽带账号上网的设置方法...