我有一个bmp图像,当我使用OpenCV和Paint将图像转换为jpg图像时,两个jpeg图像看起来相同,但在进行比较时它们是不同的,即使文件大小也不同。
我从这个link获取图像。
并将其保存在我的电脑上,然后我使用mspaint编辑此图像并将其保存为jpeg,此图像的文件大小为356kb。 当我使用OpenCV加载原始下载的bmp图像然后将图像保存为jpg时,文件大小为408kb。
当我使用Beyond Compare比较这些图像时,结果如下:
任何人都可以帮助我理解这一点。
为什么我要这个
实际上我的一位同事正在使用pc应用程序捕获图像来准备图像数据库,因此他使用键F3(用于捕获该软件中的图像的快捷方式)捕获图像,然后单击文件 - >另存为 - >将图像类型更改为JPG,然后将其重命名为0001 --- 9999.jpg,最后保存图像。
本软件存在的问题是,如果我们按F3然后按Ctrl + S,它会将文件保存为bmp并将名称保存为时间戳。 所以我告诉我的朋友,只需点击F3和Ctrl + S(这样他就可以为数据库拍多张照片)然后我会编写一个python脚本,将所有bmp文件转换为jpg并从0000-9999重命名。这部分已经完成但后来我才知道我上面分享的问题。 该数据库将与OpenCV一起使用。
请说明理由。
答案 0 :(得分:0)
JPEG压缩是一种有损压缩。您具有不同的输出大小这一事实已经表明您具有不同的压缩率。因此,你不能指望相同的结果。
标准没有指定任何量化精度。
压缩中涉及的数学(如离散余弦变换)需要几个近似值。例如,你将为Pi使用多少位数?你将如何估算余弦?...
所有这些因素在不同实现之间可能会有所不同,因此即使您具有相同的压缩率,也不能保证获得相同的结果。
如果您对更多细节感兴趣,请阅读https://en.wikipedia.org/wiki/JPEG(和标准)。
因此,除非您通过同一软件运行两个图像,否则您不太可能获得所需的图像。即使在相同的软件中也可能存在差异。