我使用OpenCV for Python的函数imwrite来将一组图像从PNG转换为JPEG格式,而不指定质量(默认值为95),所以我首先获得了一组JPEG图像。
然后我使用相同的功能将同一组图像从PNG转换为JPEG格式,指定质量值75,因此我获得了第二组JPEG图像。
最后,我尝试使用相同的功能来转换第一组JPEG图像,指定质量值为75,因此我获得了第三组JPEG图像。
当我在第二和第三组JPEG图像之间执行二进制比较时,图像是不同的。为什么?目标质量相同(75),但源图像不同。
答案 0 :(得分:2)
当您进行第一次压缩(质量95)时,第一组JPEG在未压缩时不会与输入PNG相同。 JPEG是有损的。 这意味着您的Quality 75压缩输入不一样。在第一种情况下,它是您的原始PNG图像,在第二种情况下,它是相同文件的JPEG扭曲版本。 由于输入图像不相同,输出也不一样。
答案 1 :(得分:2)
你需要了解"质量"在JPEG中没有任何意义。它仅仅是编码器之间不同的用户界面简写。您没有保存质量为75的JPEG图像。您告诉JPEG编码使用其质量75(选择量化表)进行压缩。
进行编码100 => 95 => 70与100 =>不同。 70。
每次通过JPEG编码器运行位图时,都可以引入差异。压缩(和解压缩)过程中有几个步骤可以改变图像。