You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenCV读写JPG图像后两次读取的数组总和不一致是什么原因?

JPG图像读写后数组总和不一致的成因
  • 核心原因是 JPEG属于有损压缩格式:你调用cv2.imwrite存储为.jpg后缀的文件时,OpenCV默认会启用JPEG有损压缩逻辑,会主动丢弃部分人眼难以感知的图像细节来缩小文件体积,这个压缩过程是不可逆的。因此写入后再读取得到的img2数组,和原始img1数组的像素值会存在差异,总和sum1和sum2自然不相等。
  • 即便你手动将JPEG压缩质量拉到最高,比如使用代码cv2.imwrite('test2.jpg', img1, [int(cv2.IMWRITE_JPEG_QUALITY), 100])写入,也无法完全消除数值差异:JPEG压缩标准本身内置了不可逆的量化环节,哪怕质量参数设置为100,也只是最大程度降低损失,不会做到和原始像素值完全一致。
  • 如果需要保证读写前后数组完全一致,请选择无损格式存储,比如BMP、PNG(无损压缩模式)、TIFF等,这类格式不会修改原始像素数值,读写后的数组总和会完全相等。

内容的提问来源于stack exchange,提问作者Shindou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:09