使用 python OpenCV 将单值颜色转换为 LAB

Converting single value colors to LAB using python OpenCV

我有一个 numpy 数组,其中包含浮点 RGB 中的单个 pixel/color。我需要将此值转换为 LAB,为此我正在尝试以下操作:

color = cv2.cvtColor(color.reshape((1,1,3)), cv2.COLOR_RGB2LAB).reshape((3))

颜色是: array([137.38841, 161.38841, 65.38841], dtype=float32)

生成的 LAB 是:[100. 0. 0.]

这显然不正确,因为它应该接近于:[62.667494977600484, 22.98637993404601, 46.1397720707445]

如何将值转换为 LAB?

您没有正确重塑它。使用下面的代码来做到这一点。

import cv2
import numpy as np
bgr = [40, 158, 16]
lab = cv2.cvtColor( np.uint8([[bgr]] ), cv2.COLOR_BGR2LAB)[0][0]
print(lab)  #[145  71 177]

以上代码将有助于 rgb/bgr 值是整数。由于您的值是浮点数,我建议您使用在此 link 上找到的 rgbtolab 函数。