OpenCV Python 如何创建HSV颜色空间的颜色条

如何使用OpenCV Python创建HSV颜色空间的颜色条

为了将 HSV(色调,饱和度和值) 颜色空间作为颜色条,我们需要应用两种不同的函数。这两个函数是 cv2.createTrackbar()cv2.getTrackbarPos()

  • 函数 cv2.reateTrackbar() 用于创建颜色条,而函数 cv2.getTrackbarPos() 用于访问所选颜色条位置的值。

  • 使用这两个函数,我们创建一个窗口,其中包含用于 H,S,V 颜色的颜色条和一个显示所选颜色的颜色窗口。通过更改颜色条的位置,我们可以选择特定颜色的值。

  • 颜色 H 的范围是 0179 ,而对于 SV ,它在 0255 之间。

语法

cv2.createTrackbar(trackbar_name, window_name, default_value, max_value, callback_func)
cv2.getTrackbarPos(trackbar_name, window_name)

参数

  • trackbar_name - 颜色条名称。该名称用于访问颜色条位置值。

  • window_name - 附加颜色条的窗口名称。

  • default_value - 设置颜色条的默认值。

  • max_value - 颜色条的最大值。

  • callback_func - 当颜色条值发生变化时执行的函数。

步骤

若要将 HSV 颜色空间作为颜色条,可以按照以下步骤执行-

第一步是导入所需的库。所需的Python库为 OpenCVNumPy 。请确保您已经安装了它们。

import cv2
import numpy as np

接下来定义一个 回调函数 。它将颜色条位置作为默认参数。我们定义此函数不执行任何操作。

def nothing(x):
   pass

定义黑色图像并创建名为 HSV颜色条 的窗口。颜色条和颜色将显示在此窗口中。

img = np.zeros((300,650,3), np.uint8)
window_name = 'Trackbar Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

为颜色更改创建颜色条,传递所有五个参数。

cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)

获取所有三种 HSV 颜色的当前颜色条位置。

h = cv2.getTrackbarPos('H',window_name)
s = cv2.getTrackbarPos('S',window_name)
v = cv2.getTrackbarPos('V',window_name)

为上述颜色更新颜色图像窗口。并将图像颜色转换为 BGR

img[:] = [h,s,v]
img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)

现在显示所选颜色条值的颜色图像窗口中的颜色。

while(True):
   cv2.imshow(window_name,img)
   k = cv2.waitKey(1) & 0xFF
   if k == ord('q'):
      break

示例1

在此Python程序中,我们创建一个颜色调板作为窗口。我们为红色,绿色和蓝色颜色创建了三个颜色条。通过滑动颜色条,您将在颜色窗口中获得相应的颜色显示。

# 导入所需的库文件
import cv2
import numpy as np

def nothing(x):
   pass

# 创建黑色图像和窗口
img = np.zeros((300,650,3), np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
window_name = 'HSV 颜色调色板'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# 创建颜色调整的滑动条
cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)
while(True):
   cv2.imshow(window_name,img)
key = cv2.waitKey(1) & 0xFF
   if key == ord('q'):
      break

   # 获取四个滑动条的当前位置
   h = cv2.getTrackbarPos('H',window_name)
   s = cv2.getTrackbarPos('S',window_name)
   v = cv2.getTrackbarPos('V',window_name)
   img[:] = [h,s,v]
   img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
cv2.destroyAllWindows()

输出

运行上面的代码后,将显示以下输出窗口。按下“ q ”键可关闭输出窗口。

如何使用OpenCV Python创建HSV颜色空间的颜色条?

三个滑动条的默认值都是 0 ,窗口的颜色是黑色。滑动滑动条,您将看到颜色窗口中对应的颜色。

示例2

在这个程序中,我们创建了一个窗口作为 HSV 颜色调色板,其中包含一个 switch 按钮。我们创建了四个滑动条,三个用于 HSV颜色 ,一个用于 switch 按钮。

switch 按钮处于 ON 状态时,才会显示颜色图像中的颜色。滑动滑动条,您将在颜色窗口中得到相应的颜色显示。

导入 cv2
导入 numpy 作为 np

定义 nothing(x):
    pass

# 创建一个黑色图像,一个窗口
img = np.zeros((300,650,3), np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
window_name = 'HSV Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# 为颜色变化创建滑块
cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)

# 创建开关以进行打开/关闭功能
# switch = '0 : OFF \n1 : ON'
cv2.createTrackbar('switch', window_name,0,1,nothing)
while(True):
    cv2.imshow(window_name,img)
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break

    # 获取四个滑块的当前位置
    h = cv2.getTrackbarPos('H',window_name)
    s = cv2.getTrackbarPos('S',window_name)
    v = cv2.getTrackbarPos('V',window_name)
    sw = cv2.getTrackbarPos('switch',window_name)
    if sw == 0:
        img[:] = 0
    else:
        img[:] = [h,s,v]
    img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
cv2. destroyAllWindows())

输出

当您运行上面的程序时,它将显示以下输出窗口。要关闭输出窗口,请按“ q ”按钮。

如何使用OpenCV Python创建HSV颜色空间的颜色条?

默认情况下,所有滑块的值均为 0 。窗口的颜色为黑色。当您打开开关(选择为 1 )并将 HSV 颜色滑块滑动到所需值时,窗口的颜色将与设置的值对应。对于明亮的颜色,请选择最大的 SV 滑块值并滑动 H 滑块。

当开关关闭时,滑动滑块将不会有任何变化。

如果在开关关闭时(设置为0)滑动滑动条,则窗口的颜色不会发生变化。它将保持原样(即黑色)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV