如何使用OpenCV Python创建RGB颜色调色盘作为滑动条?

如何使用OpenCV Python创建RGB颜色调色盘作为滑动条?

OpenCV 中,可以使用 cv2.createTrackbar() 函数来创建滑动条。要访问所选滑动条位置的值,需要使用 cv2.getTrackbarPos() 函数。

使用这两个函数,我们创建一个窗口,其中包含用于 R,G,B 颜色的滑动条和用于显示所选颜色的颜色窗口。通过更改滑块的位置, RGB 颜色在 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 - 滑动条值更改时执行的函数。

步骤

要将滑块作为 RGB颜色调色盘 创建,请按照以下步骤操作 –

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

import cv2
import numpy as np

接下来,定义一个 回调函数 。它将滑动条位置作为默认参数。我们定义这个函数什么也不做。

def nothing(x):
   pass

定义黑色图像并创建一个名为 Trackbar Color Palette 的窗口。在此窗口中将显示滑块和颜色。

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

为颜色更改创建滑块,传递所有五个参数。滑块值的范围在0到255之间。

cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',window_name,0,255,nothing)

获取三个 RGB 颜色的当前滑动条位置。

r = cv2.getTrackbarPos('R',window_name)
g = cv2.getTrackbarPos('G',window_name)
b = cv2.getTrackbarPos('B',window_name)

为以上颜色更新颜色图像窗口。

img[:] = [b,g,r]

现在在颜色窗口中显示所选滑动条值的颜色。

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

示例1

在以下Python程序中,我们创建一个窗口作为颜色调色板。我们创建了三个滑动条用于R,G和B颜色。通过滑动滑动条,您将获得在颜色窗口中显示的相应颜色。

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

def nothing(x):
   pass

# 创建一个黑色的图像,并创建窗口
img = np.zeros((300,650,3), np.uint8)
window_name = '拖动条颜色调色板'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# 创建三个用于改变颜色的拖动条
cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',window_name,0,255,nothing)

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

   # 获取四个拖动条的当前位置
   r = cv2.getTrackbarPos('R',window_name)
   g = cv2.getTrackbarPos('G',window_name)
   b = cv2.getTrackbarPos('B',window_name)
   img[:] = [b,g,r]
 cv2.destroyAllWindows()

输出

运行上述程序时,你将会得到如下 输出 窗口。按下‘ q ’键关闭窗口。

如何使用OpenCV Python创建RGB颜色调色盘作为滑动条?

三个拖动条的默认值均为0,窗口颜色为黑色。拖动拖动条,可以看到颜色窗口中相应显示的颜色。

示例 2

在这个程序中,我们创建了一个作为颜色调色板的窗口,并添加了一个 开关 按钮。

我们创建了四个拖动条,前三个用于调节R、G、B三种颜色,最后一个用于 开关 按钮。

开关 按钮处于 ON 状态时,颜色窗口中只显示颜色。拖动拖动条,即可在颜色窗口中看到相应的颜色。

import cv2
import numpy as np

def nothing(x):
   pass

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

# 创建三个滑动条用于颜色调节
cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',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

   # 获取滑动条当前位置的值
   r = cv2.getTrackbarPos('R',window_name)
   g = cv2.getTrackbarPos('G',window_name)
   b = cv2.getTrackbarPos('B',window_name)
   s = cv2.getTrackbarPos("switch",window_name)
   if s == 0:
      img[:] = 0
   else:
      img[:] = [b,g,r]
cv2.destroyAllWindows()

输出

运行以上程序后,将显示以下输出窗口。要关闭 输出 窗口,按下“ q ”按钮。

默认情况下,所有滑动条都设为 0 。窗口的颜色是黑色的。当您将开关打开(选择为 1 )并将 RGB 颜色滑动条滑动到所需的值时,颜色窗口会显示相应的颜色。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV