【发布时间】:2020-08-31 15:14:30
【问题描述】:
我在 Numpy 数组中有一个图像。 我将用黑色替换特定颜色,并将所有其他颜色替换为白色。 For 循环会变慢,而且我的 numpy 条件不起作用。
与数组匹配的所有像素 --> [121, 112, 131] 必须完全替换为另一个数组 --> [0, 0, 0]
所有其他带 --> [255, 255, 255]
我的结果以与第一通道匹配的监督像素结束 [True, False, False]
抱歉拼写错误,我希望我的代码更好理解。
我的示例结果:
import numpy as np
from scipy import misc
file = misc.face()
img = np.array(file)
target_color = [121, 112, 131]
true_color = [0, 0, 0]
false_color = [255, 255, 255]
true_mask = np.all(img == target_color, axis=2)
false_mask = np.all(img != target_color, axis=2)
img[true_mask] = true_color
img[false_mask] = false_color
print(img)
输出:
array([[[ 0, 0, 0],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
...,
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[121, 157, 96],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]]], dtype=uint8)
问题:
当第一个通道等于目标颜色时,还有像素。
Target Pixel: [121, 112, 131]
Overseen Pixel: [121, 157, 96]
【问题讨论】:
-
另外,如果我将它传递到编辑器中,您的代码将无法运行(我知道,因为我刚刚尝试过)
-
抱歉,有一个难看的错字。现在它应该运行了。
-
感谢您的修复。
misc.face()已经返回一个数组。
标签: python numpy image-processing multidimensional-array