gpt4 book ai didi

python - 将单 channel 图像的像素设置为透明的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:51:40 25 4
gpt4 key购买 nike

我想要删除以下图像的黑色背景,这意味着将黑色像素设置为透明,就像在 .png 文件中一样。

图像: IMAGE HERE

此图像是使用以下代码完成的:

plt.imshow(terrain,cmap='magma')

其中 terrain(n, n)NumPy 数组,terrain[i,j]位于范围(0,9)内。

最佳答案

您可以从整数数组和您使用的颜色图创建 RGBA 图像,然后将您想要透明度的值的 Alpha channel 设置为 0。然后,您可以在 Matplotlib 的 savefig 命令中设置 transparent=True

这是一个代码片段:

import numpy as np
from matplotlib import pyplot as plt

# Mockup data
terrain = np.zeros((200, 200), np.uint8)
terrain[20:180, 20:180] = np.random.randint(0, 10, (160, 160))

# Generate RGBA image from colormapped grayscale data
cmap = plt.get_cmap('magma')
rgba_img = (cmap(terrain / np.max(terrain)) * 255).astype(np.uint8)

# Set alpha channel to 0 for all 0 values in terrain
rgba_img[:, :, 3] = (terrain > 0) * 255

# Output with transparency
plt.figure(0, figsize=(5, 5))
plt.imshow(rgba_img)
plt.axis('off')
plt.tight_layout()
plt.savefig('output.png', transparent=True)

输出如下所示:

Output

希望有帮助!

----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
Matplotlib: 3.2.0rc1
NumPy: 1.18.1
----------------------------------------

关于python - 将单 channel 图像的像素设置为透明的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60068713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com