在MATLAB中,我读取了彩色视频,提取了特定的帧并使用rgb2gray
函数将其转换为灰度图像。但是当我使用OpenCV2.3.1加载相同的视频时,请提取相同的帧并将其转换为灰度图像不能提供与MATLAB相同的灰度值。这是为什么?
这是使用OpenCV的C++代码:
VideoCapture cap(0);
cap.open("Human sperm evaluation_0.avi");
Mat image;
Mat gray(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<uchar>(i,j)<<' ';
}
}
最佳答案
首先,OpenCV中的所有彩色图像都是BGR而不是RGB,因此问题之一可能是OpenCV将转换错误。您应该使用BGR2GRAY。
其次,如果我对Matlab的印象很好,则应指定图像中值的范围。您必须在0到255之间输入灰度图像。
希望对您有所帮助。