如何转换灰度级的Cartopy瓷砖?

问题描述 投票:2回答:1

我正在尝试以灰度显示通过Cartopy的img_tiles模块下载的瓷砖。那是因为我想覆盖彩色编码的卫星数据,我更喜欢背景,尽可能少分散注意力。

source code中记录的各种磁贴提供程序允许在初始化期间使用desired_tile_form。文档并不完全清楚可以分配给该参数的值(仅提到“RGB”),但在代码中挖掘一点我看到它传递给img.convert,这是一个PIL.image方法。

现在PIL documentation说:

当前版本支持“L”,“RGB”和“CMYK”之间的所有可能转换。矩阵参数仅支持“L”和“RGB”。

将彩色图像转换为黑白(模式“L”)时,该库使用ITU-R 601-2亮度转换:[...]

所以看起来使用“L”模式会将图像变成黑白图像,但在我的情况下这似乎并不合适。

例:

标准“RGB”模式:

import matplotlib.pyplot as plt    
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

figure, ax = plt.subplots(figsize=(15, 10))
request = cimgt.StamenTerrain()
ax = plt.axes(projection=request.crs)
ax.set_extent([94, 102, 0, 6])
ax.add_image(request, 8)
plt.show()

RGB mode

(不工作)黑白模式:

figure, ax = plt.subplots(figsize=(15, 10))
request = cimgt.StamenTerrain(desired_tile_form="L")

ax = plt.axes(projection=request.crs)
ax.set_extent([94, 102, 0, 6])
ax.add_image(request, 8)
plt.show()

bw not working

我和GoogleTiles()有类似的结果。

将瓷砖变成黑白的正确方法是什么?

python python-imaging-library cartopy
1个回答
2
投票

我不确定它是否是设计的,但它看起来像是在这里使用默认的色彩映射。您可以将不同的色彩映射传递给add_image()方法,例如:

ax.add_image(request, 8, cmap='gray')

Here's a list of colormaps available in Matplotlib.

© www.soinside.com 2019 - 2024. All rights reserved.