我正在尝试以灰度显示通过Cartopy的img_tiles
模块下载的瓷砖。那是因为我想覆盖彩色编码的卫星数据,我更喜欢背景,尽可能少分散注意力。
source code中记录的各种磁贴提供程序允许在初始化期间使用desired_tile_form
。文档并不完全清楚可以分配给该参数的值(仅提到“RGB”),但在代码中挖掘一点我看到它传递给img.convert
,这是一个PIL.image方法。
当前版本支持“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()
(不工作)黑白模式:
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')