Python 如何将颜色转换为列表?以numpy数组形式从低到高的值

Python 如何将颜色转换为列表?以numpy数组形式从低到高的值,python,image,opencv,image-processing,Python,Image,Opencv,Image Processing,我想根据照片中的点击来检测从低到高的颜色值。例如,在这段代码中,我使用[40,50,50]作为绿色的下限值,使用[80255255]作为绿色的上限值,但我想自动化这个过程。例如,您单击了照片的绿色部分,这将返回 [40,50,50]和[80255255]您可以使用列表或字典来计算每个阴影(R、G、B)的值,然后通过单击事件,您可以在图片上获得BGR的值(如:40,50,50),并通过条件比较每个值: (如果valueB>40且valueB50且valueG50且valueR

我想根据照片中的点击来检测从低到高的颜色值。例如,在这段代码中,我使用
[40,50,50]
作为绿色的下限值,使用
[80255255]
作为绿色的上限值,但我想自动化这个过程。例如,您单击了照片的绿色部分,这将返回
[40,50,50]
[80255255]
您可以使用列表或字典来计算每个阴影(R、G、B)的值,然后通过单击事件,您可以在图片上获得BGR的值(如:40,50,50),并通过条件比较每个值:

(如果valueB>40且valueB<80且valueG>50且valueG<255且valueR>50且valueR<255:打印(“颜色值为[40,50,50]和[80255255]”)


通过这种方式,您可以获得想要的颜色。

我认为,只知道一个像素的颜色是不可能做到的。
import cv2
import numpy as np

img = cv2.imread('image.jpg')
res = img.copy()
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_green = np.array([40,50,50])
upper_green = np.array([80,255,255])
r2, g2, b2 = 255, 0, 0

mask = cv2.inRange(hsv, lower_green, upper_green)

mask = mask/255
mask = mask.astype(np.bool)
res[:,:,:3][mask] = [b2, g2, r2] # opencv uses BGR

cv2.imshow('image', img)
cv2.imshow('Result', res)
cv2.waitKey(0)
cv2.destroyAllWindows()