【发布时间】:2018-07-16 17:52:35
【问题描述】:
我有一个形状为 (300,300,3) 的图像,由这些像素 [255, 194, 7],[224, 255, 8],[230, 230, 230],[11, 102, 255] 组成。我想将此像素[230, 230, 230] 更改为[255,255,255]。其余像素为[0,0,0]。所以我正在应用 numpy where 函数来切换像素。下面是代码:
import numpy
im = numpy.array([[[255, 194, 7],[224, 255, 8],[230, 230, 230],[11, 102, 255]]])
im[np.where((im == [230, 230, 230]).all(axis = 2))] = [255,255,255]
im[np.where((im != [255,255,255]).all(axis = 2))] = [0,0,0]
第一个代码工作正常,但其中包含255 的所有像素(如[11, 102, 255])在第二行中根本不会翻转。并且图像保持不变。谁能告诉我我做错了什么?
【问题讨论】:
-
什么是
im?向我们展示它是如何制作的。它是 PIL 图像,还是枕头图像还是.....?如果您可以向我们展示一个 5x5x3 示例和预期结果,这也会有所帮助。 minimal reproducible example -
使用 8 位无符号数据类型不是更好吗?
-
在最后一行将
all更改为any。
标签: python image numpy image-processing