要做一个背景黑色,物体形态可变(比如项链,两次放置的形状肯定不一样)的图像识别。很直接的想法就是,提取图片中的主要颜色,计算有多少像素在这个颜色范围内,把像素个数作为识别的特征。
从网上找到了一段代码:
import colorsys
def get_dominant_color(image):
image = image.convert('RGBA')
#生成缩略图,减少计算量
image.thumbnail((200, 200))
max_score = 0
dominant_color = 0
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# 跳过纯黑色
if a == 0:
continue
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
y = (y - 16