Мне известно, что OpenCV считывает цветное изображение как BGR по умолчанию, а MATLAB считывает цветное изображение как RGB.Я оба преобразовал одно и то же изображение в цветовое пространство L * a * b *, используя код ниже.
OpenCV Python
img=cv2.imread("sample.jpg")
lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
cv2.imshow("Sample",lab)
MATLAB
img=imread("sample.jpg")
D = makecform('srgb2lab');
lab=applycform(img,D);
imshow(lab)
Однако отображаемое изображениене имеет такого же выхода.Но когда я меняю каналы L * и b * в OpenCV, он отображает то же изображение, что и MATLAB.
img=cv2.imread("sample.jpg")
lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
l,a,b=cv2.split(lab)
lab=cv2.merge((b,a,l))
cv2.imshow("Sample",lab)
Что приводит меня к вопросу, что я должен всегда заменять первый и третий канал 3-канального изображения, чтобы правильно отображать его в OpenCV?Не только L * a * b *, HSV и другие цветовые пространства тоже.Так как BGR отображается как RGB.Это означает, что L * a * b * отображается как b * a * L *, поэтому я должен снова инвертировать его, чтобы получить правильный вывод?