繁体   English   中英

如何在python opencv中获得hsv颜色的低值和高值

[英]How to get low and high values of hsv color in python opencv

我正在尝试在 python opencv 中检测几种颜色。 为此,我需要定义低和高 hsv 值,以便代码可以读取它并检测颜色。 现在我面临的问题是如何获得高低 hsv 颜色。 我指的是下图

在此处输入图片说明

我需要检测这件夹克,因此需要输入它的高低 hsv。 为此,我参考了此代码,该代码允许选择图像的任何部分并为其输出高低 hsv 值。 但据我所知,hsv 值不能大于 100,但此代码和大多数其他在线代码给出的 hsv 值大于 100,这让我很困惑这些值如何大于100。

任何人都可以解释我们如何获得低和高 hsv 值的值

试试下面的代码:

import cv2
import numpy as np

img = cv2.imread("jacket.jpg")

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# mask of green (36,25,25) ~ (86, 255,255)
mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))

green = cv2.bitwise_and(img,img, mask= mask)    

cv2.imshow('Image', green)
cv2.waitKey(0)
cv2.destroyAllWindowss()

输出:

在此处输入图片说明

查看如何正确选择上下HSV颜色检测值计算器讨论。

找不到资源,但找到了类似的东西并使它有用,感谢作者

import cv2
import imutils  
import numpy as np  

image_hsv = None   # global
pixel = (20,60,80) # some stupid default

# mouse callback function
def pick_color(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDOWN:
        pixel = image_hsv[y,x]

        #you might want to adjust the ranges(+-10, etc):
        upper =  np.array([pixel[0] + 10, pixel[1] + 10, pixel[2] + 40])
        lower =  np.array([pixel[0] - 10, pixel[1] - 10, pixel[2] - 40])
        print(pixel, lower, upper)

        image_mask = cv2.inRange(image_hsv,lower,upper)
        cv2.imshow("mask",image_mask)

def main():
    import sys
    global image_hsv, pixel # so we can use it in mouse callback

    image_src = cv2.imread("myimage.jpeg")  # pick.py my.png
    image_src = imutils.resize(image_src, height=800)
    if image_src is None:
        print ("the image read is None............")
        return
    cv2.imshow("bgr",image_src)

    ## NEW ##
    cv2.namedWindow('hsv')
    cv2.setMouseCallback('hsv', pick_color)

    # now click into the hsv img , and look at values:
    image_hsv = cv2.cvtColor(image_src,cv2.COLOR_BGR2HSV)
    cv2.imshow("hsv",image_hsv)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__=='__main__':
    main()

加载的图像将如下所示:

在此处输入图片说明

点击球后,你会得到这样的图像,

在此处输入图片说明

最后:真正的 BGR 值,HSV 上下边界将打印在终端中,如下所示,

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM