在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之间输入灰度图像。

希望对您有所帮助。

09-25 21:44