Matplotlib显示灰度图
引言
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显示灰度图相关推荐
- matplotlib显示灰度图为紫色的问题
import numpy as np import matplotlib.pyplot as plta = np.zeros((3,5)) plt.imshow(a) 得到的图确实下面这样的,而不是黑 ...
- plt显示灰度图出现Invalid shape问题
问题背景:tensorflow2.0.0中的Dataset转换为numpy,利用matplotlib进行显示.data的维度为[4, 256, 256, 1], def show(ds, num=2) ...
- OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序
OpenCV+Python 彩色图片的 BGR.灰度图.HSV分量图显示的程序 介绍 OpenCV+Python 使用openCV中的split()函数和 cvtColor()函数提取一张彩色图片的B ...
- python matplotlib 显示opencv的图像
python matplotlib 显示opencv的图像 首先需要import import cv2 import numpy as np from matplotlib import pyplot ...
- numpy 用于图像处理(灰度图、转置、通道分离、图像扩展、水平镜像、水平翻转、调换x,y坐标、添加mask、随机打乱顺序、交换通道)
目录 numpy 用于图像处理 1. 转换为灰度图 2. 转置 3. 画出三个通道的彩图 4. 图像扩展 5. 水平镜像 --- 交换行 6. 水平翻转 --- 交换列 7. 调换x,y坐标 8. 添 ...
- Android提高十六篇之使用NDK把彩图转换灰度图
在Android上使用JAVA实现彩图转换为灰度图,跟J2ME上的实现类似,不过遇到频繁地转换或者是大图转换时,就必须使用NDK来提高速度了.本文主要通过JAVA和NDK这两种方式来分别实现彩图转换为 ...
- 【OpenCV】将RGB图像转为灰度图
基本思路: 1. 输入RGB(彩色)图像 2. 处理图像 3. 输出GRAY(灰度)图像 这里将处理图像过程单独写成一个函数,供主函数调用 1 void RGB2GRAY(IplImage* s ...
- android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法
一般而言在Android上使用JAVA实现彩图转换为灰度图,与J2ME上的实现方法类似,不过遇到频繁地转换或者是大图转换时,就必须使用NDK来提高速度了.本文主要通过JAVA和NDK这两种方式来分别实 ...
- opencv生成灰度图并保存
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- python灰度图cv2到plt变颜色_python中plt.imshow与cv2.imshow显示颜色问题
python中plt.imshow与cv2.imshow显示颜色问题 在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象. 这是因为:opencv的接口使用BGR ...
最新文章
- Android RSA加密对象数据
- linux 下修改日期和时间
- ApacheServerStatus开启
- java软件网络工程师面试题_170道Java工程师面试题,你敢挑战吗?
- foobar2000 ios版怎么添加音乐_抖音怎么设置说完话后再放音乐 视频先配音后半段添加背景音乐...
- 展示 测速_科技产品 | 人工智能amp;科技展示厅——助力高校人工智能学科建设及产业人才培养...
- java 获取光标_如何在java中使用Windows API获取当前鼠标光标类型?
- Linux下查看出口IP
- 实时监听input输入框value的变化:
- asmcmd:Connected to an idle instance.
- PAT-乙级-1009. *说反话 (20)
- ActivityMQ使用
- html顺序播放mp3,完美:按顺序播放mp3的方法是什么?如何更改U盘中歌曲的播放顺序...
- word文档怎么找回误删的文件_Word文档删除了怎么恢复?Word误删除恢复技巧
- 【Love2d从青铜到王者】第十篇:Love2d之类和类的继承(Classes And Inheritance)
- python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...
- 光猫桥接后宽带降速问题解决
- tesla 显卡在ubuntu下安装显卡驱动log in loop 不能登陆的问题
- @value 读取yml没有读到
- 小米2019秋招软件开发笔试题A选择部分解析
热门文章
- 指纹的对比分析系统概述
- CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
- 新闻 - 被遗忘的“活化石”:BBS没落中求生
- 身份证验证程序(一)
- 大一计算机网络技术实训总结,大一计算机网络技术实训报告精选
- Project组合项目案例分享
- 计算机课玩游戏检讨书,上微机课玩游戏检讨书.doc
- java vo层_JAVA3个数据层(pojo,dto,vo)、dao层、services层、controller层解释
- win10计算机禁用用户账户控制,Win10系统用户帐户控制提示怎么取消 关闭用户账户控制的3种方法...
- 家庭单台计算机连接宽带步骤,两台win7电脑共用一个宽带账号上网的设置方法...