matlab和opencv灰度图像值不同

时间:2012-09-05 13:55:39

标签: matlab opencv

  

可能重复:
  OpenCV and MATLAB gray scale values differ for the same image

在matlab中,我读取了一个颜色视频,提取某个帧并使用rgb2gray函数将其转换为灰度图像。但是当将相同的视频加载到openCV2.3.1并提取相同的帧然后转换为灰度时它不会t给出与matlab相同的灰度值?为什么?这是带有openCV2.3.1的C ++代码      VideoCapture上限(0);      cap.open(“人类精子评估_0.avi”);     Mat图像; Mat grey(480,640,CV_8U);

for(int i=0;i<513;i++)
{ 
   cap >> image; 
   cvtColor(image,gray,CV_RGB2GRAY);
} 

for(int i=0;i<20;i++)
{ 
    for(int j=0;j<20;j++) 
    { 
        cout<<(int)gray.at(i,j) << ' '; 
    } 
}

1 个答案:

答案 0 :(得分:4)

  1. OpenCV默认使用BGR颜色格式。在这种情况下,您应该使用CV_BGR2GRAY模式。使用CV_RGB2GRAY时确保你真的有RGB。

  2. 从RGB转换为灰色可能因实现而异。在将信道与某些系数相加之前,图像处理软件中存在一个常见的错误,即不补偿当前RGB颜色空间的伽马校正。如果您在OpenCV和Matlab结果中存在细微差别,则可能是问题所在。