如何以灰度转换 Cartopy 瓦片?
How to convert Cartopy tiles in grayscale?
我正在尝试以灰度显示通过 Cartopy 的 img_tiles
模块下载的图块。那是因为我想覆盖彩色编码的卫星数据,并且我更喜欢背景尽可能不分散注意力。
source code 中记录的各种图块提供程序允许在初始化期间使用 desired_tile_form
。该文档并不完全清楚可以分配给该参数的可能值(仅提到 "RGB"),但在代码中挖掘了一下我发现它被传递给了 img.convert
,这是一个PIL.image 方法。
现在 PIL documentation 说:
The current version supports all possible conversions between “L”,
“RGB” and “CMYK.” The matrix argument only supports “L” and “RGB”.
When translating a color image to black and white (mode “L”), the
library uses the ITU-R 601-2 luma transform:
[...]
所以看起来使用 "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()
(不工作)黑白模式:
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()
我得到了与 GoogleTiles()
相似的结果。
将磁贴变成黑白的正确方法是什么?
我不确定这是否是设计使然,但看起来这里使用的是默认颜色图。您可以将不同的颜色图传递给 add_image()
方法,例如:
ax.add_image(request, 8, cmap='gray')
我正在尝试以灰度显示通过 Cartopy 的 img_tiles
模块下载的图块。那是因为我想覆盖彩色编码的卫星数据,并且我更喜欢背景尽可能不分散注意力。
source code 中记录的各种图块提供程序允许在初始化期间使用 desired_tile_form
。该文档并不完全清楚可以分配给该参数的可能值(仅提到 "RGB"),但在代码中挖掘了一下我发现它被传递给了 img.convert
,这是一个PIL.image 方法。
现在 PIL documentation 说:
The current version supports all possible conversions between “L”, “RGB” and “CMYK.” The matrix argument only supports “L” and “RGB”.
When translating a color image to black and white (mode “L”), the library uses the ITU-R 601-2 luma transform: [...]
所以看起来使用 "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()
(不工作)黑白模式:
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()
我得到了与 GoogleTiles()
相似的结果。
将磁贴变成黑白的正确方法是什么?
我不确定这是否是设计使然,但看起来这里使用的是默认颜色图。您可以将不同的颜色图传递给 add_image()
方法,例如:
ax.add_image(request, 8, cmap='gray')