像素查找器.py

像素查找器.py

"""
   像素查找器.py
   本程序在一幅图上根据像素值查找像素点的x,y坐标,也就是行列号。
   行号就当于y坐标,列号就相当于x坐标。
"""
__author__ = '李兴球'
__date__ = '2020/10/17'
__blog__ = 'www.lixingqiu.com'

import numpy as np
from PIL import Image

def _find_pixels(im,pixel):
    """im:Image图形对象,
       pixel:RGBA四元组或列表       
       返回生成器,它能生成所有找到的像素点的行列号。
    """
    ps = []
    pixel = np.array(list(pixel),dtype=np.uint8)
    array = np.array(im)
    # print(array==pixel)
    # print(np.all(array==pixel, axis=2))   
    # 轴为-1即倒数第一维,表示最里层中括号里的数据进行"and"操作。
    # 如果有一个为False,结果就为False。
    # 只有为全True,则表示这个像素的4个值都和此处像素的4个值相等。
    rows,cols = np.where(np.all(array==pixel, axis=-1))
    for r ,c in zip(rows,cols):
        #ps.append((r,c))
        yield (r,c)

def contain_pixel(im,pixel):
    """判断图像im是有pixel像素
       im:Image图形对象,
       pixel:RGBA四元组或列表
    """      
    p = _find_pixels(im,pixel)
    print('p=',p)
    try:
        next(p)        
        return True
    except StopIteration:
        return False
    except:
        return False
    
im = Image.open("c:/kuai.png")
p = contain_pixel(im,[51,255,0,255])

if p :
    print('有这个像素')
else:
    print('没有')

李兴球

李兴球的博客是Python创意编程原创博客