1

可能重复:
同一图像的 OpenCV 和 MATLAB 灰度值不同

在matlab中,我读取了一个彩色视频,提取了某个帧并使用rgb2gray函数将其转换为灰度图像。但是当将相同的视频加载到openCV2.3.1并提取相同的帧然后转换为灰度时,它不会给出与matlab相同的灰度值???为什么??.这是带有openCV2.3.1 VideoCapture cap(0)的C++代码;cap.open("人类精子评估_0.avi"); 垫子图像;垫灰色(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) << ' '; 
    } 
}
4

1 回答 1

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

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

于 2012-09-07T07:51:59.910 回答