【发布时间】:2017-07-05 10:07:19
【问题描述】:
我想从 Python 中具有给定 RGB 颜色的像素中获取所有坐标。这是我正在使用的代码,但它不起作用。我想找到所有黄色的像素。
from PIL import Image
def find_rgb(imagename, r_query, g_query, b_query):
img = Image.open(imagename)
rgb = img.convert('RGB')
for x in range(507):
for y in range(337):
r, g, b, = rgb.getpixel((x, y))
if r >= r_query and g >= g_query and b <= b_query:
return (x,y)
如果至少有三个颜色相同的像素,Python 只给出坐标,你怎么能做到呢? (它们不能是完全相同的颜色,例如可以是 156,173,87 和 155,173,87。)
【问题讨论】:
-
什么exaclty不起作用?您收到错误还是没有找到像素?
-
每次我尝试时它只显示一个坐标,并且总是相同的坐标。
-
尝试将
return替换为yield。使用前者,你只会得到一个返回值,因为函数完成了第一个匹配。后者继续搜索并最终创建一个包含所有找到的像素的生成器。生成器可以用list(find_rgb(imagename, r_query, g_query, b_query))进行转换