基于PIL实现相同RGB值的像素坐标分组存储需求
按RGB值分组存储图像像素坐标
你需要实现的功能是将图像中相同RGB值的像素坐标归类到同一列表,每个独特的RGB值对应一个独立列表。针对你提供的PIL处理代码,我们可以直接优化并完成分组逻辑,无需额外保存灰度图再读取,提升效率。
修改后的实现代码
from PIL import Image, ImageOps file_name = "test.png" og_image = Image.open(file_name) # 转灰度后直接转为RGB模式,无需保存再读取 gray_image = ImageOps.grayscale(og_image).convert('RGB') pixels = gray_image.load() width, height = gray_image.size # 用字典存储,键为RGB元组,值为对应像素坐标列表 rgb_coords = {} for x in range(width): for y in range(height): rgb = pixels[x, y] # 如果该RGB值不在字典中,先初始化空列表 if rgb not in rgb_coords: rgb_coords[rgb] = [] # 将当前像素坐标添加到对应列表 rgb_coords[rgb].append((x, y)) # 示例:打印每个RGB值及其对应的像素坐标列表 for rgb, coords in rgb_coords.items(): r, g, b = rgb print(f"RGB值({r},{g},{b})对应的像素坐标:{coords}")
代码说明
- 优化了原流程:直接将灰度图转为RGB模式,跳过保存再读取的步骤,减少磁盘IO操作
- 使用
dict(字典)作为存储结构:以RGB元组作为唯一键,确保每个RGB值对应独立列表 - 遍历像素时,检查当前RGB值是否已在字典中,不存在则初始化空列表,随后将坐标
(x,y)追加到对应列表中 - 最后可以通过遍历字典,轻松查看每个RGB值对应的所有像素坐标
内容的提问来源于stack exchange,提问作者Zen35X
相关产品推荐
相关产品推荐

