Escenario: al realizar una prueba de estrés, es necesario determinar si un área determinada de la imagen es negra
La biblioteca OpenCV se usa aquí para identificar el color de la imagen, que puede identificar casi todos los colores comunes
directamente en el código
import cv2
import numpy as np
import collections
class colorList:
def getColorList(self):
dict = collections.defaultdict(list)
# 黑色
lower_black = np.array([0, 0, 0])
upper_black = np.array([180, 255, 46])
color_list = []
color_list.append(lower_black)
color_list.append(upper_black)
dict['黑色'] = color_list
# 灰色
lower_gray = np.array([0, 0, 46])
upper_gray = np.array([180, 43, 220])
color_list = []
color_list.append(lower_gray)
color_list.append(upper_gray)
dict['灰色'] = color_list
# 白色
lower_white = np.array([0, 0, 221])
upper_white = np.array([180, 30, 255])
color_list = []
color_list.append(lower_white)
color_list.append(upper_white)
dict['白色'] = color_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['红色'] = color_list
# 红色2
lower_red = np.array([0, 43, 46])
upper_red = np.array([10, 255, 255])
color_list = []
color_list.append(lower_red)
color_list.append(upper_red)
dict['红色2'] = color_list
# 橙色
lower_orange = np.array([11, 43, 46])
upper_orange = np.array([25, 255, 255])
color_list = []
color_list.append(lower_orange)
color_list.append(upper_orange)
dict['橙色'] = 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['黄色'] = color_list
# 绿色
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
color_list = []
color_list.append(lower_green)
color_list.append(upper_green)
dict['绿色'] = color_list
# 青色
lower_cyan = np.array([78, 43, 46])
upper_cyan = np.array([99, 255, 255])
color_list = []
color_list.append(lower_cyan)
color_list.append(upper_cyan)
dict['青色'] = color_list
# 蓝色
lower_blue = np.array([100, 43, 46])
upper_blue = np.array([124, 255, 255])
color_list = []
color_list.append(lower_blue)
color_list.append(upper_blue)
dict['蓝色'] = color_list
# 紫色
lower_purple = np.array([125, 43, 46])
upper_purple = np.array([155, 255, 255])
color_list = []
color_list.append(lower_purple)
color_list.append(upper_purple)
dict['紫色'] = color_list
return dict
# 处理图片
def get_color(self):
print('颜色对比')
img = cv2.imread('D:\sdcard\XiaLa.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
maxsum = -100
color = None
color_dict = colorList().getColorList()
for d in color_dict:
mask = cv2.inRange(hsv, color_dict[d][0], color_dict[d][1])
binary = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY)[1]
binary = cv2.dilate(binary, None, iterations=2)
img, cnts = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
sum = 0
for c in img:
sum += cv2.contourArea(c)
if sum > maxsum:
maxsum = sum
color = d
return color
if __name__ == '__main__':
print(colorList().get_color())
El resultado de la operación es el siguiente:
El color se puede juzgar y las cosas que se pueden hacer son mucho más convenientes.
Por ejemplo, al realizar una prueba de estrés, es necesario determinar si el área de la captura de pantalla es negra, si es negra, dejará de ejecutarse, y si no lo es, continuará.
¡DE ACUERDO! Conveniente y fácil de entender, el código se puede usar directamente