在图片处理,OCR的某些场景,我们经常需要让程序识别其颜色,以下是一个简单且快速的例子:
# Check image is Red or not
def IsRed(image):
# 读取图片并转为 HSV 数组,并识别其字体颜色(以确定+/-)
image2 = image.convert("HSV")
hsv_array = np.array(image2)
h = hsv_array[:, :, 0].astype(np.uint16)
s = hsv_array[:, :, 1].astype(np.uint16)
v = hsv_array[:, :, 2].astype(np.uint16)
# 定义红色和绿色的色相范围(调整阈值可优化识别)
red_mask = ((h >= 0) & (h <= 30)) | ((h >= 330) & (h <= 360))
green_mask = (h >= 75) & (h <= 150)
# 排除低饱和度和低亮度的像素(减少背景干扰)
valid_mask = (s >= 50) & (v >= 50)
# 统计有效像素中的红色和绿色数量
red_count = np.sum(red_mask & valid_mask)
green_count = np.sum(green_mask & valid_mask)
if red_count > green_count:
return 1
else:
return 0
#endif
#end def
本代码仅以红色示例,其他颜色请自行扩充 :(