可能重复:
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) << ' ';
}
}
答案 0 :(得分:4)
OpenCV默认使用BGR颜色格式。在这种情况下,您应该使用CV_BGR2GRAY模式。使用CV_RGB2GRAY时确保你真的有RGB。
从RGB转换为灰色可能因实现而异。在将信道与某些系数相加之前,图像处理软件中存在一个常见的错误,即不补偿当前RGB颜色空间的伽马校正。如果您在OpenCV和Matlab结果中存在细微差别,则可能是问题所在。