OpenCV和MATLAB中的色彩空间差异

时间:2018-09-14 19:05:54

标签: python matlab opencv

我知道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)

但是,显示的图像没有相同的输出。但是,当我在OpenCV中交换L *和b *通道时,它显示的图像与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 *,所以我必须再次将其反转以得到正确的显示输出?

0 个答案:

没有答案