[英]Numpy delete 2d index from 3d array
我有RGB图像3d数组,当我应用np时,我想删除那里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)
问题:由于第三个颜色通道,无法重新调整“ I”形状。
如何删除带有颜色通道的索引中的元素
np.delete
实际上是要删除数组的各个部分,但这可能不是您要从图像中删除像素时要执行的操作。 相反,您可能希望将这些像素设置为某个“背景”值,取决于黑色( [0, 0, 0]
)或白色(可能[255, 255, 255]
[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
我尝试了一个解决方案,并且工作正常。 在对每个图像应用np.delet之后,我将图像分为三个颜色通道,并再次重新组合它们。
谢谢大家 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.