图片来源:https://www.pianshen.com/article/178932885/
构建代码
import numpy as np
import collections
import cv2
import numpy as np
import matplotlib.pyplot as plt
#定义字典存放颜色分量上下限
#例如:{颜色: [min分量, max分量]}
#{'red': [array([160, 43, 46]), array([179, 255, 255])]}
"""
0是黑色 255是白色
mask = cv2.inRange(hsv, lower_red, upper_red) #lower20===>0,upper200==>0,
函数很简单,参数有三个
第一个参数:hsv指的是原图
第二个参数:lower_red指的是图像中低于这个lower_red的值,图像值变为0
第三个参数:upper_red指的是图像中高于这个upper_red的值,图像值变为0
而在lower_red~upper_red之间的值变成255
"""
## 下面数字的165,原始数字为46。这里使用165是为了过滤掉亮度比较暗的噪声
def get_green_ColorList():
dict = collections.defaultdict(list)
#绿色
lower_green = np.array([35, 43, 165])
upper_green = np.array([77, 255, 255])
color_list = []
color_list.append(lower_green)
color_list.append(upper_green)
dict['green'] = color_list
#青色
lower_cyan = np.array([78, 43, 165])
upper_cyan = np.array([99, 255, 255])
color_list = []
color_list.append(lower_cyan)
color_list.append(upper_cyan)
dict['cyan'] = color_list
#蓝色
lower_blue = np.array([100, 43, 165])
upper_blue = np.array([124, 255, 255])
color_list = []
color_list.