0

我有一个 numpy 数组,其中包含浮点 RGB 中的单个像素/颜色。我需要将此值转换为 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?

4

1 回答 1

2

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

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 值是整数。由于您的值是浮点数,我建议您使用此链接上的 rgbtolab 函数。 https://stackoverflow.com/a/16020102/9320324

于 2020-02-20T18:20:02.500 回答