【发布时间】:2019-06-20 11:23:10
【问题描述】:
我正在分析图像颜色,但正在去除任何 0,0,0(黑色)的 RGB 颜色像素。 (Using this top answer as reference)
我有一个像素数组
pixels = np.float32(img.reshape(-1, 3))
[[ 126. 94. 51.]
[ 171. 115. 65.]
[ 188. 119. 64.]
...,
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
然后我尝试遍历并删除所有黑色的子数组。
pixelstoignore = np.delete(pixels, np.where(pixels == [0,0,0]), axis=0)
但是,平均颜色和主色之间的差异告诉您其他情况。平均颜色工作正常。 这是我的照片:
似乎正在发生的事情是,我的代码正在删除任何包含 0 的子数组。例如,上面的红色的 RGB 值为 255,0,0。我的代码正在删除它。但是如果所有 3 个值都是 0,我只想删除它!
我得到了使用 np.all 的平均值,但我无法让它与 delete 函数一起使用。救命!
编辑:解决方案似乎是这样的:
pixelstoignore = np.delete(pixels, np.where((pixels == [0,0,0]).all(axis=1)), axis=0)
【问题讨论】:
-
这在我看来就像
delete中的一个错误 - 它不应该接受元组参数。 -
不过,有一个问题,我知道如何删除只有零的整行,我已经知道了,虽然我不明白的是,这对您的实际情况不会有问题必须具有特定形状的图像?