首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在中获取hsv颜色的低值和高值

如何在中获取hsv颜色的低值和高值
EN

Stack Overflow用户
提问于 2019-07-03 05:13:38
回答 2查看 7.1K关注 0票数 2

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

我需要检测这件夹克,因此需要输入它的高和低hsv。为此,我得到了对这个代码的引用,它允许选择图像的任何部分,并为它输出高和低的hsv值。但据我所知,hsv值不能大于100,但是这个代码和大多数其他代码在线给出的hsv值大于100,这是我非常困惑的,为什么这些值会大于100。

有谁能解释一下我们如何才能得到低和高hsv值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-03 05:25:38

试试下面的代码:

代码语言:javascript
复制
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值以进行颜色检测。

票数 3
EN

Stack Overflow用户

发布于 2020-04-01 08:34:12

找不到资源,但找到了这样的东西,并使它有用,多亏了作者

代码语言:javascript
复制
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边界将在终端打印如下,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56863292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档