gpt4 book ai didi

python - HSB颜色范围,适用于VIBGYOR颜色

转载 作者:行者123 更新时间:2023-12-02 17:25:35 26 4
gpt4 key购买 nike

我正在开发一个可检测框架中主要颜色的应用程序。我使用python代码和HSV颜色范围来做到这一点。我用于检测蓝色的示例代码如下。

import cv2    
def detectBlue(frame):
# Convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# define range of green color in HSV
lower_blue = np.array([101, 39, 64])
upper_blue = np.array([140, 255, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
kernel = np.ones((5,5),'int')
dilated = cv2.dilate(mask,kernel)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame,frame, mask=mask)
ret,thrshed = cv2.threshold(cv2.cvtColor(res,cv2.COLOR_BGR2GRAY),3,255,cv2.THRESH_BINARY)
#img,contours,hier = cv2.findContours(thrshed,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
contours,hier = cv2.findContours(thrshed,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
area = [0]
for cnt in contours:
#Contour area is taken
area.append(cv2.contourArea(cnt))
return max(area)

我为具有HSV颜色范围的红色和绿色创建了类似的功能,如下所示。
Green:
lower_green = [65,60,60])
upper_green = [80,255,255]

Red:
lower_red = [170,120,70]
upper_red = [180,255,255]

现在,我尝试对所有VIBGYOR颜色执行相同的操作,但是我没有为所有这些获得正确的颜色范围。
我尝试使用此python代码将RGB代码转换为HSV。
import colorsys

def rgb_hsv_converter(rgb):
(r,g,b) = rgb_normalizer(rgb)
hsv = colorsys.rgb_to_hsv(r,g,b)
(h,s,v) = hsv_normalizer(hsv)
upper_band = [h+10, s+40, v+40]
lower_band = [h-10, s-40, v-40]
return {
'upper_band': upper_band,
'lower_band': lower_band
}

def rgb_normalizer(rgb):
(r,g,b) = rgb
return (r/255, g/255, b/255)

def hsv_normalizer(hsv):
(h,s,v) = hsv
return (h*360, s*255, v*255)

rgb_hsv_converter((255,255,255))

但是,这些范围在测试时无法正常工作。我进行了很多搜索,以找出所有这些颜色的最佳HSV范围,但没有用。
有人可以建议任何一种方法来找到多种颜色的最佳和更准确的颜色范围吗?

最佳答案

您可以采用纯红色RGB(255,0,0),将其转换为HSV,结果色相(大约为0-0)将是红色的中心值。对要在HSV空间中定义的其余颜色执行相同的操作。绿色大约为55,蓝色大约为120,依此类推...

enter image description here

关于python - HSB颜色范围,适用于VIBGYOR颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59623675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com