python - 如何获得HSV和LAB颜色空间?

标签 python opencv hsv lab

我将 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 Values by OpenCV

如果我得到这些值并颠倒顺序,我得到的是 RGB 值: enter image description here

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

Reference

添加支票,real color conversion , python 代码:

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

关于python - 如何获得HSV和LAB颜色空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307959/

相关文章:

python - 如何使用 FFMPEG 驱动程序使 opencv 工作

php - PHP中的RGB到HSV

java - 将 RGB 值转换为 HSV

python - 查找字符串中的第一个非重复字符

Python,sklearn,it-idf 如何按 "####"分割,默认空格

python - 我可以在 python 中 "fake"一个包(或至少一个模块)用于测试目的吗?

python - 如何使用 Keras 在二值图像上使用卷积神经网络?

python - 实时视频处理设计问题

android - 哪个是 HSV 皮肤检测器 openCV android 的颜色空间?

python - 带有 WTforms 的 RECaptcha 不会呈现