如何找到具有指定值的像素位置

1 投票
2 回答
7673 浏览
提问于 2025-04-30 14:44

中间有一个黑色像素的示例

有没有快速的方法可以找到一个像素的x和y坐标,前提是我知道它的rgb值?在这个例子中,黑色像素的坐标是100x100。我应该使用openCV还是Image?有没有人能给我个主意或者示例?

#!/usr/bin/env python
# coding: utf-8

import Image

img = Image.open('splash.png')
rgb = img.convert('RGB')
r, g, b = rgb.getpixel((100, 100))

print r, g, b
#for pixel in rgb.getdata():
#    print pixel
>>>0 0 0

如你所见,我需要的是相反的方式。

暂无标签

2 个回答

0

不太确定你是指“运行时间短”还是“输入命令最快”。如果你是指后者,使用ImageMagick的convert命令大约花了4秒钟来输入:

convert B7cjD.png txt: | grep "#000000"
100,100: (0,0,0,1)  #000000  black
1

要做到这一点,唯一的方法就是遍历整个图像,直到找到一个符合你搜索条件的像素为止。如果你需要频繁地进行这样的操作,或者对很多不同的图像进行搜索,可以把这些图像放进一个字典里,这样可以更快地找到你需要的内容。

import Image

def find_rgb(imagename, r_query, g_query, b_query):
    img = Image.open(imagename)
    rgb = img.convert('RGB')
    for x in range(img.size[0]):
       for y in range(img.size[1]):
           r, g, b, = rgb.getpixel((x, y))
           if r == r_query and g == g_query and b == b_query:
               return (x,y)

print(find_rgb('splash.png', 0, 0, 0))

撰写回答