Numpy从3d数组中删除2d索引

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

我有RGB图像3d数组,我想删除当我应用np.delete时,由于存在2d位置识别的特定像素,输出不能再重新形成为3d数组,例如:

indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)]

I = np.empty(ImageRGB.shape())

I = np.delete(ImageRGB,obj=indices)    

问题:'我',由于第三个颜色通道,无法再次重新塑造。

如何删除索引中的元素及其颜色通道

python arrays numpy
2个回答
0
投票

np.delete旨在实际删除数组的部分,但这可能不是您从图像中删除像素时要执行的操作。相反,您可能希望将这些像素设置为某个“背景”值,可能是黑色([0, 0, 0])或白色(可能是[1, 1, 1][255, 255, 255],具体取决于图像的编码方式)。

您可以使用NumPy的索引设置这些值;例如:

image_rgb = np.random.rand(30, 30, 3)
indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)]

i, j = zip(*indices)
image_rgb[i, j] = [0, 0, 0] # set values to black

0
投票

我尝试了一个解决方案,它的工作正常。在将np.delet应用于每一个之后,我将图像分割为三色通道,然后重新组合它们。

谢谢大家 :)

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