Python cv2.inRange的上/下参数是什么颜色空间?

Python cv2.inRange的上/下参数是什么颜色空间?,python,opencv,opencv-python,Python,Opencv,Opencv Python,我正在尝试为一个颜色范围创建一个遮罩。我知道在将图像传递到inRange之前,我需要将图像转换为HSV。inRange的下两个参数是我们为其创建遮罩的颜色的下限值和上限值 下面和上面是什么颜色空间 根据这里的答案,我看过HSV和BGR。文档中没有指定要使用的特定颜色空间。例如,这个答案()说值应该是HSV,但传递的值看起来像BGR(例如255)。 PS-关于选择特定范围的工具/技巧的任何提示?我一直在使用谷歌的颜色选择器使用以下代码查找特定对象的HSV颜色值。并将该HSV值设置为cv2.in范围

我正在尝试为一个颜色范围创建一个遮罩。我知道在将图像传递到inRange之前,我需要将图像转换为HSV。inRange的下两个参数是我们为其创建遮罩的颜色的下限值和上限值

下面和上面是什么颜色空间

根据这里的答案,我看过HSV和BGR。文档中没有指定要使用的特定颜色空间。例如,这个答案()说值应该是HSV,但传递的值看起来像BGR(例如255)。
PS-关于选择特定范围的工具/技巧的任何提示?我一直在使用谷歌的颜色选择器

使用以下代码查找特定对象的HSV颜色值。并将该HSV值设置为cv2.in范围下限和上限值。这是一个opencv程序,使用您的设备摄像头和轨迹栏,您可以找到HSV上限和下限值:

import cv2
import numpy as np


def nothing(x):
    pass


cap = cv2.VideoCapture(0)
cv2.namedWindow("Trackbars")

cv2.createTrackbar("L - H", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("L - S", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("L - V", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("U - H", "Trackbars", 255, 255, nothing)
cv2.createTrackbar("U - S", "Trackbars", 255, 255, nothing)
cv2.createTrackbar("U - V", "Trackbars", 255, 255, nothing)

while True:
    _, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    l_h = cv2.getTrackbarPos("L - H", "Trackbars")
    l_s = cv2.getTrackbarPos("L - S", "Trackbars")
    l_v = cv2.getTrackbarPos("L - V", "Trackbars")
    u_h = cv2.getTrackbarPos("U - H", "Trackbars")
    u_s = cv2.getTrackbarPos("U - S", "Trackbars")
    u_v = cv2.getTrackbarPos("U - V", "Trackbars")

    lower_blue = np.array([l_h, l_s, l_v])
    upper_blue = np.array([u_h, u_s, u_v])
    mask = cv2.inRange(hsv, lower_blue, upper_blue)
    mask2 = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
    result = cv2.bitwise_and(frame, frame, mask=mask)

    cv2.imshow("frame", frame)
    cv2.imshow("mask", mask)
    cv2.imshow("result", result)

    key = cv2.waitKey(1)
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows() 
输出:
对于我的对象红色HSV上限值-[193188186],下限值-[135127,95]

使用以下代码查找特定对象HSV颜色值。并将该HSV值设置为cv2.in范围下限和上限值。这是一个opencv程序,使用您的设备摄像头和轨迹栏,您可以找到HSV上限和下限值:

import cv2
import numpy as np


def nothing(x):
    pass


cap = cv2.VideoCapture(0)
cv2.namedWindow("Trackbars")

cv2.createTrackbar("L - H", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("L - S", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("L - V", "Trackbars", 0, 255, nothing)
cv2.createTrackbar("U - H", "Trackbars", 255, 255, nothing)
cv2.createTrackbar("U - S", "Trackbars", 255, 255, nothing)
cv2.createTrackbar("U - V", "Trackbars", 255, 255, nothing)

while True:
    _, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    l_h = cv2.getTrackbarPos("L - H", "Trackbars")
    l_s = cv2.getTrackbarPos("L - S", "Trackbars")
    l_v = cv2.getTrackbarPos("L - V", "Trackbars")
    u_h = cv2.getTrackbarPos("U - H", "Trackbars")
    u_s = cv2.getTrackbarPos("U - S", "Trackbars")
    u_v = cv2.getTrackbarPos("U - V", "Trackbars")

    lower_blue = np.array([l_h, l_s, l_v])
    upper_blue = np.array([u_h, u_s, u_v])
    mask = cv2.inRange(hsv, lower_blue, upper_blue)
    mask2 = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
    result = cv2.bitwise_and(frame, frame, mask=mask)

    cv2.imshow("frame", frame)
    cv2.imshow("mask", mask)
    cv2.imshow("result", result)

    key = cv2.waitKey(1)
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows() 
输出: 对于我的对象,红色HSV上限值为[193188186],下限值为[135127,95]

函数仅检查
cv2.inRange()

因此,如果您的
src
阵列形状为BGR、RGB或HSV,则上下边界应在相同的颜色空间中。通常,对于颜色分割,HSV颜色空间使用较多,但您也可以尝试其他颜色空间。
cv2.inRange()函数仅检查


因此,如果您的
src
阵列形状为BGR、RGB或HSV,则上下边界应在相同的颜色空间中。通常,对于颜色分割,HSV颜色空间更常用,但您也可以尝试其他颜色空间。

对于每个通道,您可以选择上限和下限。你可以用你喜欢的任何颜色空间展示一个垫子。默认情况下,图像作为BGR加载。放入cv2中的图像的图像颜色空间。inRange()确定用于上下颜色的值的颜色空间。对于每个通道,选择上限和下限。你可以用你喜欢的任何颜色空间展示一个垫子。默认情况下,图像作为BGR加载。放入cv2.inRange()中的图像的图像颜色空间决定用于较低颜色和较高颜色的值的颜色空间。