Python 将单通道图像的像素设置为透明的最简单方法是什么?
我想擦除下图的黑色背景,这意味着将黑色像素设置为透明,就像在.png文件中一样 图像: 此图像是使用以下代码完成的:Python 将单通道图像的像素设置为透明的最简单方法是什么?,python,image,numpy,matplotlib,Python,Image,Numpy,Matplotlib,我想擦除下图的黑色背景,这意味着将黑色像素设置为透明,就像在.png文件中一样 图像: 此图像是使用以下代码完成的: plt.imshow(地形,cmap='magma') 其中地形是一个(n,n)维NumPy阵列,地形[i,j]在范围(0,9)检查后,我注意到图像中的黑色像素不是完全黑色的。无论如何,您可以尝试以下方法: from matplotlib import pyplot as plt import numpy as np import cv2 img = cv2.imread('
plt.imshow(地形,cmap='magma')
其中
地形
是一个(n,n)
维NumPy阵列,地形[i,j]
在范围(0,9)
检查后,我注意到图像中的黑色像素不是完全黑色的。无论如何,您可以尝试以下方法:
from matplotlib import pyplot as plt
import numpy as np
import cv2
img = cv2.imread('test.png')
img_alpha = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
img_alpha[np.where((img==[3,0,0]).all(axis=2))] = [3,0,0,0]
plt.imshow(img_alpha,cmap='magma')
检查后,我注意到你的图像中的黑色像素不是完全黑色的。无论如何,您可以尝试以下方法:
from matplotlib import pyplot as plt
import numpy as np
import cv2
img = cv2.imread('test.png')
img_alpha = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
img_alpha[np.where((img==[3,0,0]).all(axis=2))] = [3,0,0,0]
plt.imshow(img_alpha,cmap='magma')
您可以从整数数组和使用的颜色贴图创建RGBA图像,然后将alpha通道设置为0,以获得您希望透明度的值。然后,可以在Matplotlib的
savefig
命令中设置transparent=True
下面是一段代码片段:
将numpy导入为np
从matplotlib导入pyplot作为plt
#模型数据
地形=np.0((200200),np.uint8)
地形[20:180,20:180]=np.random.randint(0,10,(160,160))
#从彩色映射灰度数据生成RGBA图像
cmap=plt.get_cmap(“岩浆”)
rgba_img=(cmap(地形/np.max(地形))*255).aType(np.uint8)
#对于地形中的所有0值,将alpha通道设置为0
rgba_img[:,:,3]=(地形>0)*255
#透明输出
plt.图(0,figsize=(5,5))
plt.imshow(rgba_img)
打印轴(“关闭”)
plt.紧_布局()
plt.savefig('output.png',transparent=True)
然后,输出如下所示:
希望有帮助
----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.8.1
Matplotlib:3.2.0rc1
NumPy:1.18.1
----------------------------------------
您可以从整数数组和使用的颜色贴图创建RGBA图像,然后将alpha通道设置为0,以获得想要的透明度值。然后,可以在Matplotlib的savefig
命令中设置transparent=True
下面是一段代码片段:
将numpy导入为np
从matplotlib导入pyplot作为plt
#模型数据
地形=np.0((200200),np.uint8)
地形[20:180,20:180]=np.random.randint(0,10,(160,160))
#从彩色映射灰度数据生成RGBA图像
cmap=plt.get_cmap(“岩浆”)
rgba_img=(cmap(地形/np.max(地形))*255).aType(np.uint8)
#对于地形中的所有0值,将alpha通道设置为0
rgba_img[:,:,3]=(地形>0)*255
#透明输出
plt.图(0,figsize=(5,5))
plt.imshow(rgba_img)
打印轴(“关闭”)
plt.紧_布局()
plt.savefig('output.png',transparent=True)
然后,输出如下所示:
希望有帮助
----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.8.1
Matplotlib:3.2.0rc1
NumPy:1.18.1
----------------------------------------
是否可以在不保存图像的情况下使用地形
数组?保存是什么意思?在您的代码中,我们阅读了test.png
图像,在我的问题中,图像信息是一个整数数组,其值可以在范围(9)
内。这可能需要将崎岖不平的数组保存为图像,然后读取。是否可以使用地形数组而不保存图像?保存是什么意思?在您的代码中,我们读取test.png
图像,在我的问题中,我的图像信息是整数数组,其值可以在范围(9)
内。这可能需要将凹凸阵列保存为图像,然后读取它。