当我在 matlab 中使用“显示”函数显示图像的像素值(转换为灰度的 RGB 图像)时,我发现像素值小于 1(所有值都在 0 和 1 之间)。而当我在 opencv 中做同样的事情时,我得到了更高的值(value)。为什么会发生值(value)观的变化?
打开CV代码和matlab代码如下:
for (int i = 0; i < img1.rows; i++)
{
for (int j = 0; j < img1.cols; j++)
{
cout << (unsigned int)img1.at<uchar>(i, j) << endl;
}
}
Matlab code:
gI=rgb2gray(I);
imshow(gI);
最佳答案
很抱歉让你失望了。
没有人保证将 RGB 转换为灰度会产生相同的结果。有2个原因
0.299f*RED + 0.587f*GREEN + 0.114f*BLUE
Here ),而 Matlab 使用另一种方法(0.2989*RED + 0.587*GREEN + 0.1140*BLUE. Here )。注意 openCV 0.299 和 Matlabs 0.2989 之间的区别。更多信息可以在这个答案中找到(here)
关于matlab - opencv和matlab之间的像素值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045115/