Python 为什么opencv和matlab中的luma参数不同?
我使用以下代码在matlab中从图像中提取luma:Python 为什么opencv和matlab中的luma参数不同?,python,matlab,opencv,image-processing,numpy,Python,Matlab,Opencv,Image Processing,Numpy,我使用以下代码在matlab中从图像中提取luma: I = imread('myphoto.bmp'); I = rgb2ycbcr(I); I = I[:, :, 1]; imwrite(I, 'luma.bmp'); 这一个在opencv python中也可以这样做: I = cv2.imread('myphoto.bmp') I = cv2.cvtColor(I, cv2.COLOR_BGR2YCR_CB) I = I[:, :, 0] cv2.imwrite('luma.bmp',
I = imread('myphoto.bmp');
I = rgb2ycbcr(I);
I = I[:, :, 1];
imwrite(I, 'luma.bmp');
这一个在opencv python中也可以这样做:
I = cv2.imread('myphoto.bmp')
I = cv2.cvtColor(I, cv2.COLOR_BGR2YCR_CB)
I = I[:, :, 0]
cv2.imwrite('luma.bmp', I)
但是我得到了完全不同的结果
以下是获得的图像:
Matlab:
OpenCV:
这背后有什么原因吗?如何获得更相似的结果?rgb2ycbcr和cvtColor的官方文档中解释了差异的原因,您已经仔细阅读了,不是吗?无论如何。。。您可以对亮度值应用线性变换,如L=16+(219*L)/255中所示。MATLAB还可以对OpenCV没有校正的图像进行gamma校正。当我查看两个框架中加载的相同图像之间的像素分布时,我意外地发现了这一点。尝试将每个图像规格化为
[0255]
以保持一致,就像GBOFI建议的那样。@rayryeng Uhm,当我将其作为bmp文件加载时,我没有注意到该图像存在这样的问题。虽然当我使用jpeg时,我会得到非常不同的结果。@GBOFI您可以将注释作为答案发布…注意,默认情况下,将图像转换为8位整数类型。如果要按原样加载图像,请将标志
选项设置为-1
。