【发布时间】:2019-07-13 16:48:20
【问题描述】:
我目前正在为.jpeg 图像创建Generation loss 代码。
理论:- .jpg 是一种有损压缩格式(大部分情况下)。即每次将图像转换为.jpg 时,原始图像的一些内容/数据都会在此过程中丢失。这会导致文件大小变小,但由于数据丢失,图像的质量低于原始图像。在大多数用例中,质量下降可以忽略不计。但是如果这个过程执行很长时间,图像的所有像素数据都会被压缩(丢失)很多次,我们最终只会得到随机噪声。
我尝试在PIL 和cv2 上执行此操作,但没有成功。
我尝试了什么:- 打开图像(假设格式为.png 的图像),并将其转换为.jpg。然后将图像(当前格式为.jpg)转换回.png,这样就可以多次执行上述过程。
我的理由是,由于我们将原始图像转换为 jpeg,因此应该会丢失一些数据。
我正在使用cv2.imshow() 显示图像,因为窗口会一直保持活动状态,直到被明确销毁,或者遇到cv2.destroyWindow()/cv2.destroyAllWindows()。
我预计图像会显示出来,并且它的质量会随着程序的进行而逐渐降低,但由于某种原因,图像保持不变。所以,我期待有人帮助我从头开始创建代码(因为我目前的努力是徒劳的)。
P.S.:- 我没有发布任何代码的原因是因为它更像是一个障碍而不是任何具体的东西,并且对实现目标没有任何帮助。所以我上传只会浪费别人时间分析。
【问题讨论】:
-
您链接到的 YouTube 视频(至少在我看来)没有显示 “代际损失”。我认为它显示了当您将相同的图像保存在
quality=100,然后在quality=99然后在quality=98时会发生什么。在我看来,这是比较一种质量的损失与另一种质量的损失。我理解“世代损失”是由于以某种固定质量重复保存而造成的质量损失。 -
@MarkSetchell 你可能是对的,因为我自己从来没有做过,也没有看到它的工作示例。所以我只是在互联网上搜索它,发现了那个视频(没有确认它的工作),因为我认为它非常类似于我想要实现的目标。
标签: python image python-imaging-library jpeg cv2