【发布时间】:2015-06-30 19:57:12
【问题描述】:
当我在 matlab 中使用“显示”函数显示图像(转换为灰度的 RGB 图像)的像素值时,我发现像素值小于 1(所有值都在 0 和 1 之间)。而当我在 opencv 中做同样的事情时,我得到了更高的价值。为什么会发生价值观的变化? 打开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);
【问题讨论】:
-
图像的数据类型是什么?
double,uint8,一些特殊的图像类? you 如何在 MATLAB 和 OpenCV 之间进行转换?我的猜测是,在 MATLAB 中,您正在处理标准化的double值 (0-1),而在 OpenCV 中,它们是uint8(0-255) 或类似的值。如果确实如此,你可以找到数据类型的最大值,并在两个系统之间进行转换。 -
matlab 是否使用了 mat2gray 函数?在stackoverflow.com/questions/27483013/scaling-a-matrix-in-opencv中尝试我的答案
-
也许可以在 matlab 和 opencv 中发布您的示例代码
-
我的垫子是 8UC3 类型的。如何将 MATLAB 的标准化双精度值转换为 8UC3?仅乘以 255 就足够了?
标签: matlab opencv image-processing pixel