【发布时间】:2022-01-15 02:52:02
【问题描述】:
以下内容:
image = cv2.imread("image.png")
print(image.shape)
print(np.unique(image,axis=1))
如果给予:
(700, 500, 3)
[[[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]
[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] 应该是唯一的像素值之一。
【问题讨论】:
-
将其重新整形为3列的二维数组,这样每一行代表一个像素,列是颜色分量。然后沿轴 0 获得唯一(即唯一行)。 --
np.unique(image.reshape(-1,3), axis=0) -
正如@DanMašek 所建议的那样很好——尽管这里有更快的方法...stackoverflow.com/a/59671950/2836621
-
@MarkSetchell 不是只计算唯一像素的数量,而不是列出它们吗?
-
@QuangHoang 是的,你是对的 - 我必须更加注意。我想他们可能没有被破坏,但在这里可能不值得付出努力。