这次我们利用opencv为水果图片提取颜色特征,我的思路是:设置几种颜色区间,让opencv根据每种颜色区间画出对应颜色的部分,然后我们统计这些颜色的轮廓面积,计算出颜色占水果面积的比例。
构建颜色区间
opencv有多种表示颜色的方式,如:RGB,HSV等我采用的是HSV,网上找的区间图如下:
import numpy as np
import collections
#颜色名称和hsv区间构成一个字典
def getColorDict():
dict=collections.defaultdict(list) #字典的键对应一个列表
#红色
lower_red=np.array([156,43,46])
upper_red=np.array([180,255,255])
color_list=[]
color_list.append(lower_red)
color_list.append(upper_red)
dict['red']=color_list #关联一个列表
# 黄色
lower_yellow = np.array([26, 43, 46])
upper_yellow = np.array([34, 255, 255])
color_list = []
color_list.append(lower_yellow)
color_list.append(upper_yellow)
dict['yellow'] = color_list