【发布时间】:2023-04-02 20:28:02
【问题描述】:
我有一个具有多种颜色的 rgb 图像。我事先知道颜色(像素值)。我想在我的图像上找到某些颜色的数量。 我可以一次只做一种颜色:
color1 = [63, 51, 30]
count1 = (np.count_nonzero(np.all(MyImage == color1, axis=2)
但是如果我想找到许多不同的颜色,我怎么能找到像素总和,并且不要使用这样的东西:
color2 = [14, 24, 145]
count2 = (np.count_nonzero(np.all(MyImage == color2, axis=2)
color3 = [13, 190, 25]
count3 = (np.count_nonzero(np.all(MyImage == color3, axis=2)
color4 = [156, 31, 19]
count4 = (np.count_nonzero(np.all(MyImage == color4, axis=2)
sumofpixels = count1 + count2...+ countn
【问题讨论】:
-
你可以循环计数,但这里没有捷径。
-
(np.count_nonzero(np.all(MyImage == color1, axis=2)甚至不是有效的代码,关闭括号可能不会计算出你所期望的...... -
@TimRoberts 好的 numpy 编程恰恰是寻找向量化的快捷方式,而不是尽可能使用本机 python 循环,所以我不会快速回答没有这样的方法,除非你确信你没有什么可学的关于 numpy...
-
请分享您的图片和典型的颜色列表 - 确保两者都非常代表您想要做的事情。可能有更快的方法来实现您想要的。