C++ OpenCV阅读和即时书写会写出不同的图像吗?

C++ OpenCV阅读和即时书写会写出不同的图像吗?,c++,opencv,image-processing,C++,Opencv,Image Processing,这个问题让我发疯了,我不知道会发生什么 我有一个使用OpenCV的小C++脚本来播放图像,但我不能理解这个行为。 imwrite("/Users/myuser/read.jpg", imread("/Users/myuser/write.jpg"); 如果我在终端上运行diff/Users/myuser/read.jpg/Users/myuser/write.jpg,我会得到二进制文件ageval.jpg和1.jpg不同 我想了解为什么会发生这种情况,我如何解决它,使图像完全相同 谢谢大家!

这个问题让我发疯了,我不知道会发生什么

我有一个使用OpenCV的小C++脚本来播放图像,但我不能理解这个行为。

imwrite("/Users/myuser/read.jpg", imread("/Users/myuser/write.jpg");
如果我在终端上运行
diff/Users/myuser/read.jpg/Users/myuser/write.jpg
,我会得到
二进制文件ageval.jpg和1.jpg不同

我想了解为什么会发生这种情况,我如何解决它,使图像完全相同


谢谢大家!

jpg是一种有损压缩方案。每个加载/保存周期都会更改图像。这很有意义!你能推荐另一种我不太可能发生这种情况的压缩方案吗?加载和保存完全相同的图像的唯一方法是使用未压缩格式,如tga、bmp或tiff。即使png是无损的,你也不能保证压缩后的图像在加载/保存周期后是相同的,因为压缩可能是不同的级别或不同的库,从而产生稍微不同的结果。明白!非常感谢你!您可以使用png。我不同意“即使png是无损的,你也不能保证压缩后的图像在加载/保存周期后是相同的,因为压缩可能是不同的级别或不同的库,从而产生稍微不同的结果…”jpg是一种有损压缩方案。每个加载/保存周期都会更改图像。这很有意义!你能推荐另一种我不太可能发生这种情况的压缩方案吗?加载和保存完全相同的图像的唯一方法是使用未压缩格式,如tga、bmp或tiff。即使png是无损的,你也不能保证压缩后的图像在加载/保存周期后是相同的,因为压缩可能是不同的级别或不同的库,从而产生稍微不同的结果。明白!非常感谢你!您可以使用png。我不同意“即使png是无损的,你也不能保证压缩后的图像在加载/保存周期后是相同的,因为压缩可能是不同的级别或不同的库,从而产生稍微不同的结果…”