如果我知道颜色(RGB),如何获得像素坐标?

新手上路,请多包涵

我使用 Python、opencv 和 PIL。

 image = cv2.imread('image.jpg')

color = (235, 187, 7)

如果我知道像素颜色,我怎样才能得到像素坐标(x,y)?

原文由 dr.dia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

这是一个 numpythonic 解决方案。 Numpy 库尽可能加快操作速度。

  • 假设颜色为: color = (235, 187, 7)

indices = np.where(img == color)

  • 我使用 numpy.where() 方法检索两个数组的元组索引,其中第一个数组包含颜色像素 (235, 187, 7) 的 x 坐标,第二个数组包含这些像素的 y 坐标.

现在 indices 返回如下内容:

 (array([ 81,  81,  81, ..., 304, 304, 304], dtype=int64),
 array([317, 317, 317, ..., 520, 520, 520], dtype=int64),
 array([0, 1, 2, ..., 0, 1, 2], dtype=int64))

  • 然后我使用 zip() 方法获取包含这些点的元组列表。

coordinates = zip(indices[0], indices[1])

  • 但是如果你注意到,因为这是一个具有三个通道的彩色图像,每个坐标将重复三次。我们必须只保留唯一坐标。这可以使用 set() 方法来完成。

unique_coordinates = list(set(list(coordinates)))

原文由 Jeru Luke 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题