我正在使用 OpenCV 和 Python。我的代码是:
img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
img_lab = cv2.cvtColor(image,cv.CV_BGR2Lab)
当我访问像素值时,我会获取 RGB 空间中的值,例如:
img_hsv[x][y] = [255,255,255]
如何标准化 HSV 和 LAB 色彩空间? HSV = 360° 100% 100% 且 LAB = 128 100 100
编辑1。回复 Rick M.: 你的解决方案不正确,因为当我像你所说的那样将 OpenCV 的值转换为 HSV 时,我得到了随机颜色。
例如。使用
img_hsv
的值检测原始图像:
HSV Value = 16, 25, 230 -> Invert -> 230, 25, 16 = RGB Value
HSV Value = 97, 237, 199 -> Invert -> 199, 237, 97 = RGB Value
所以,当我获得
img_hsv
的值时,如果我颠倒顺序,我将获得 RGB 值...那么 OpenCV 在 img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
中做什么呢?我认为 OpenCV 返回 BGR 值...
OpenCV 带来 (0, 255) 范围内所有颜色空间的输出 注意:这取决于 Mat 类型,假设此处为
8UC3
。
因此,将 HSV 纳入其范围:
H(HSV original) = H(OpenCV) * 2.0
S(HSV original) = S(OpenCV) * 100/255.0
V(HSV original) = V(OpenCV) * 100/255.0
Lab 色彩空间也类似:
L(Lab original) = L(OpenCV) * 100/255.0
a(Lab original) = a(OpenCV) - 128
b(Lab original) = b(OpenCV) - 128
添加勾选,真实颜色转换, 蟒蛇代码:
image_rgb = np.zeros((300, 300, 3), np.uint8)
image[:] = (255, 255, 255)
img_hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV)
h = img_hsv[100, 100, 0]
s = img_hsv[100, 100, 1]
v = img_hsv[100, 100, 2]
print h , s , v
>>> 0 0 255