Image python中的灰度-从深灰色到浅灰色再到深灰色的不直接颜色

Image python中的灰度-从深灰色到浅灰色再到深灰色的不直接颜色,image,python-2.7,matplotlib,python-imaging-library,grayscale,Image,Python 2.7,Matplotlib,Python Imaging Library,Grayscale,我正在绘制此图像的灰度版本: 资料来源: 我使用了以下代码: import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm from PIL import Image file_name = 'griddata_demo.png' def func_grey(fname): image = Image.open(fname).convert("L") arr = np.asarray

我正在绘制此图像的灰度版本:

资料来源:

我使用了以下代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from PIL import Image

file_name = 'griddata_demo.png'
def func_grey(fname):
    image = Image.open(fname).convert("L")
    arr = np.asarray(image)
    plt.imshow(arr, cmap = cm.Greys_r)
    plt.show()

func_grey(file_name)

我正在使用的安装程序是Python2.7和Pandas,我已经安装了Pillow with easy install

有关图像和要求的背景信息:

  • 该图像来自于所发现的数据。理想情况下,灰度 此图像的版本应直接从此原始图像生成 数据,即。不要将其保存为彩色图像,然后尝试转换 灰度化——而只是生成一个灰度版的情节
  • 我不知道z值对应的颜色-这些 颜色可以任意设置
  • 图像的颜色贴图也可以任意选择-没有偏好。信息技术 是值得关注的灰度版本
  • 我的问题与颜色栏中显示的颜色方案有关。我需要显示一个颜色方案,其中颜色栏的颜色从浅灰色(最低强度)到深灰色(最高强度)

    运行上述代码后,将生成灰度图像。在灰度图像的颜色栏中,强度级别-0.36为深灰色。0.00时为浅灰色。但是0.48也是深灰色

    问题:
    是否可以更改颜色贴图,使-0.36为浅灰色,0.48为深灰色?我的意思是,是否可以从亮到暗显示到颜色栏?

    我想这个问题可能是关于如何在matplotlib中使用灰度颜色贴图。如果是这样的话,那就直截了当了。下面是一个使用不同颜色贴图的示例(基于op图像的代码):


    如果你真的想用PIL转换成灰度(这是一项不太好的任务,但有时是必要的任务),最好从一个亮度单调的彩色贴图开始,比如上面的
    hot
    ,而不是
    rainbow
    。另外,在我的评论中,我建议使用
    cubehelix
    ,但这不是matplotlib的标准配置,请参见。有关可用matplotlib颜色贴图的图像,请参阅。

    此解决方案适合我,而且简单得多

    from PIL import Image
    im = Image.open("image.png")
    im.convert('L').show()
    im.convert('L').save("image.png")
    

    请注意,如果要混合文件类型,可以使用(.png到.jpg)这是原始图像的颜色贴图的一个众所周知的问题:即它没有单调的亮度(在你的情况下,
    0
    处的绿色比极端处的红色或蓝色亮。你可以看到它,所以不要责怪你的转换器)。因此,您不需要使用亮度进行转换,而需要反转原始的彩色贴图。或者,如果您可以从头开始制作彩色图像,而不需要制作现有图像,请选择其他彩色贴图,例如
    hot
    ,或cubehelix等。@tom10:谢谢。我正在查看您的第一封回复。我还会阅读您的第二封信函主要问题是,你最初的彩色地图是什么?因为上面只是一个演示,彩色地图的细节非常重要(有些是琐碎的,有些是困难的),从一开始就知道很重要。@tom10:(如果您认为在聊天中进一步讨论这个问题是合适的,请让我知道-然后我会在这里发布结果,以便回答原始帖子。)因此,我用“print cm.get_cmap()”检查了我的颜色映射,我得到了“”。似乎我需要使用序列2颜色贴图列表中的颜色贴图灰色。我如何更改类别并从新类别列表中选择一个贴图?聊天对我来说很好,尽管我不知道如何到达那里,所以如果你这样做,请启动。在讨论此问题时,请务必明确,你的想法是什么原始彩色地图,与您的目的地。无论是什么,请更清楚地了解您需要转换的原始图像:1)您是否可以控制它(例如,您可以选择它的彩色地图)?你知道什么颜色对应什么值吗?你是如何知道的?等等。是的,这回答了问题。我将更新原始问题以反映更合适的措辞。基本上,正如你所说的那样,不需要生成图像并保存它,然后导入它以更改颜色映射。这一切都应该从直接原始数据。感谢您的耐心和回复。这是我在网上搜索中很难找到的答案。只是关于您的第三个子批次的后续信息-您使用了“hot”作为颜色贴图。我假设,默认情况下,它选择了红色-是否可以将其设置为其他颜色?我添加了一个链接,您可以在其中查看所有包含的颜色贴图。如果颜色贴图很简单(如hot is),您也可以非常轻松地从头开始构建自己的颜色贴图,如果您想这样做,请搜索linearsegmentedcolormap,但现在可能需要搜索包含的颜色。(但对于您的特定问题,请注意,您不能将“hot”更改为使用其他颜色。)再次感谢。全文中的所有问题都已回答。
    from PIL import Image
    im = Image.open("image.png")
    im.convert('L').show()
    im.convert('L').save("image.png")