【发布时间】:2015-06-25 12:09:34
【问题描述】:
我有一个 RGB 图像存储在 Mat 数据结构中。我正在使用 opencv 中的 cvtColor 函数将图像转换为灰度。之后,我尝试将图像标准化为 [0,1] 范围。我正在使用 opencv 的默认归一化功能。为了检查正确性,我尝试打印像素值并将其与 matlab 值等同(Matlab 值已经在 [0,1] 范围内)。但是价值观相差很大。帮助我使两个结果几乎相同。下面是opencv和matlab代码。
Mat img1 = imread("D:/input.png", CV_LOAD_IMAGE_COLOR);
cvtColor(img1, img1, CV_BGR2GRAY);
img1.convertTo(img1, CV_32FC1);
cv::normalize(img1, img1, 0.0, 1.0, NORM_MINMAX, CV_32FC1);
for (int i = 0; i < img1.rows; i++)
{
for (int j = 0; j < img1.cols; j++)
{
cout << img1.at<float>(i, j) << endl;
}
}
Matlab 代码:
I=im2double(imread('input.png'));
gI=rgb2gray(I);
display(gI)
【问题讨论】:
-
为什么不使用
convertTo为您进行缩放?cv::convertTo( img1, CV_32FC1, 1/255.0 ); -
我也试过了。值仍然不匹配。
-
你能把Matlab代码也贴出来吗?
-
@BrianL,我也发布了 matlab 代码。