簡體   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