如何获得HSV和LAB颜色空间? [英] How to get HSV and LAB color space?
问题描述
我正在将OpenCV与Python结合使用.我的代码是:
I'm using OpenCV with Python. My code is:
img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
img_lab = cv2.cvtColor(image,cv.CV_BGR2Lab)
当我访问像素值时,我正在RGB空间中获取值,例如:
When I access to a pixel value I'm getting values in RGB space, for example:
img_hsv[x][y] = [255,255,255]
如何标准化HSV和LAB颜色空间? HSV =360º100%100%和LAB = 128100100
How can I normalize HSV and LAB color space? HSV = 360º 100% 100% and LAB = 128 100 100
编辑1.回答里克·M: 您的解决方案是不正确的,因为当我像您对HSV所说的那样转换OpenCV的值时,会得到随机的颜色.
Edit1. Answering to Rick M.: Your solution is not correct because when I translate the values of OpenCV like you said to HSV I get random colors.
例如. img_hsv
值的原始图像检测:
For example. Original image detection with the values of img_hsv
:
如果我得到这些值并颠倒顺序,那我得到的是RGB值:
If I get those values and I reverse the order, I am getting the RGB values:
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值...那么img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
中OpenCV在做什么?我认为OpenCV返回BGR值...
So, when I get the values of the img_hsv
, if I invert the order I am getting the RGB Value... What is OpenCV doing in img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
then? I think OpenCV returns BGR values...
推荐答案
OpenCV带来范围(0,255)范围内所有颜色空间的输出. .
OpenCV brings the output of all the color spaces in the range (0, 255) Note: This is Mat type dependent, assuming 8UC3
here.
因此,要使HSV达到其范围:
So, to bring HSV to its range :
H(HSV original) = H(OpenCV) * 2.0
S(HSV original) = S(OpenCV) * 100/255.0
V(HSV original) = V(OpenCV) * 100/255.0
与Lab颜色空间类似:
similarly for Lab color space :
L(Lab original) = L(OpenCV) * 100/255.0
a(Lab original) = a(OpenCV) - 128
b(Lab original) = b(OpenCV) - 128
添加支票,真实颜色转换, python代码:
Adding a check, real color conversion, python code:
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
这篇关于如何获得HSV和LAB颜色空间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!