我正在使用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.: 您的解决方案是不正确的,因为当我按照您说的将OpenCV的值转换为HSV时,我得到了随机颜色。
例如。 使用
img_hsv
的原始图像检测值:
![HSV Values by OpenCV](https://istack.dev59.com/ubori.webp)
![enter image description here](https://istack.dev59.com/12oPC.webp)
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值...
h,s,v = cv2.split(img_hsv)
,单独操作它们并将它们合并在一起,img = cv2.merge((h,s,v))
,以获得您想要的结果吗? - thewaywewerecvtColor
将其转换为RGB,那么它肯定会给你不同的颜色。 - Rick M.img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
,所有的值都是BGR而不是HSV。有没有办法获取HSV值而不是BGR值? - Jotaimg_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,这样才能正常工作。 - Jotacv.CV_BGR2HSV
实际上并没有进行任何转换? - Rick M.