如何使用OpenCV Python查找颜色的HSV值?
要找到某种颜色的 HSV值 ,我们可以使用颜色空间转换将 BGR值 转换为 HSV值 。我们首先将颜色值定义为 numpy.ndarray 的 BGR值 格式,然后将其转换为 HSV空间 。
我们还可以找到 HSV值 的 下限 和 上限 ,分别为 [H-10, 100, 100] 和 [H+10, 255, 255] 。这些下限和上限可以用于跟踪特定颜色的对象。
要查找颜色的 HSV值 ,请按照以下步骤操作−
步骤
导入所需的库。在以下所有Python示例中,所需的Python库均为 OpenCV 和 NumPy 。确保您已经安装了它们。
import cv2
import numpy as np
定义一个 dtype=np.uint8 的 numpy.ndarray ,以表示颜色。
green = np.uint8([[[0, 255, 0]]])
将上述定义的颜色转换为 HSV值 。
hsvGreen = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
打印颜色的值。
print("HSV of Green:", hsvGreen)
请看下面的一些程序示例,以便更加清楚地理解它。
例1
在此示例中,我们查找绿色的 HSV值 。绿色的 BGR值 是 [0,255,0] 。
# 导入所需的库
import numpy as np
import cv2
# 为颜色定义一个numpy.ndarray
# 在此插入要转换为HSV的BGR值
green = np.uint8([[[0, 255, 0]]])
# 将颜色转换为HSV
hsvGreen = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
# 显示颜色的值
print("BGR of Green:", green)
print("HSV of Green:", hsvGreen)
# 计算下限和上限
lowerLimit = hsvGreen[0][0][0] -10, 100, 100
upperLimit = hsvGreen[0][0][0] + 10, 255, 255
# 显示下限和上限
print("Lower Limit:", lowerLimit)
print("Upper Limit", upperLimit)
输出
当您运行上面的Python程序时,它将产生以下输出 −
BGR of Green: [[[ 0 255 0]]]
HSV of Green: [[[ 60 255 255]]]
Lower Limit: (50, 100, 100)
Upper Limit (70, 255, 255)
例2
在此示例中,我们查找 BGR值 为 [106,76,89]的颜色的HSV值 。
# 导入所需库
import numpy as np
import cv2
green = np.uint8([[[0, 255, 0]]])
# 将颜色转换为HSV
hsvGreen = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
# 插入要转换为hsv的bgr值
bgr = np.uint8([[[106,76,89]]])
hsv = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
print("BGR Value:", bgr)
print("HSV Value:", hsv)
# 计算下限和上限
lowerLimit = hsvGreen[0][0][0] - 10, 100, 100
upperLimit = hsvGreen[0][0][0] + 10, 255, 255
# 显示下限和上限
print("Lower Limit:",lowerLimit)
print("Upper Limit", upperLimit)
输出结果
运行该python程序,将产生以下输出结果: ****−
BGR Value: [[[76 76 89]]]
HSV Value: [[[ 60 255 255]]]
Lower Limit: (50, 100, 100)
Upper Limit (70, 255, 255)