【发布时间】:2017-04-09 14:35:22
【问题描述】:
我在 Python 中使用 OpenCV。我的代码是:
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.: 您的解决方案不正确,因为当我像您对 HSV 说的那样翻译 OpenCV 的值时,我得到随机颜色。
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 值...
【问题讨论】:
-
您是否尝试过拆分频道,例如
h, s, v = = cv2.split(img_hsv),将它们一一操作并合并在一起,img = cv2.merge((h,s,v),以获得您想要的结果? -
不正确是什么意思?如果你把 HSV 的归一化值用
cvtColor转换成 RGB,当然它会给你不同的颜色。 -
如果我这样做
img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)所有值都在 BGR 中,我的意思是没有 HSV。有没有办法得到 HSV 值而不是 BGR 值? -
img_hsv 中的值在 0-255 范围内,但在 OpenCV 颜色空间中是 HSV。您需要使用转换将它们带入一般的 HSV 颜色空间。 (0-360, 0-100, 0-100)
-
就像我告诉你的那样,如果我这样做,规范化
img_hsv值,我会得到随机颜色,因为它们在 BGR 中没有 HSV。我做img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV),img_hsv中的所有值都在 BGR 中,就像帖子编辑一样。你可以看到图像。img_hsv[50,50]返回 BGR 值,我可以用任何 RGB 工具打印它,并且与 HSV 图像颜色相同。如果我想要来自img_save的 HSV 值,我必须从 BGR (img_hsv) 转换为 HSV 并且它是有效的