我目前正在研究一些图像处理算法,使用MATLAB,它要求加载目录中的图像并将其转换为灰度。经过一些其他处理后,图像中的所有像素都具有值0或255.然后我使用以下方法存储图像:
// temp is of type double
imwrite(temp,'FAST_tree_test_image_1_gray_matlab.jpg');
之后,我使用以下方式重新加载图像:
// image is not defined before hand; its automatically set to type UINT8
image = imread('FAST_tree_test_image_1_gray_matlab.jpg');
当我使用Variable编辑器查看图像的值时,值是不同的..几乎所有255个值都变为252,并且在存储图像之前的许多像素为0,变为2 ..
为什么会这样?这是关于格式化的吗?我怎么解决这个问题?如果我必须在Visual Studio中使用OpenCv加载此图像,该值将如何更改?
答案 0 :(得分:1)
这是正常的,因为你使用有损压缩的JPEG格式保存,所以你得到一个非常相似的图像但添加了一些噪音(这就是为什么颜色计数比2原始颜色多一点)。
我建议您以PNG格式保存图像(它使用无损压缩,并且可以获得良好的压缩率)。