如何在Python中有效地模拟图像压缩工件?

如何在Python中有效地模拟图像压缩工件?,python,image-processing,neural-network,Python,Image Processing,Neural Network,我正在用模拟图像训练神经网络,而现实生活中发生的事情之一就是低质量的JPEG压缩。它以一种特殊的方式使锋利的边缘变得模糊。有没有人有有效的方法来模拟这些效果?我的意思是创建一个干净输入的损坏版本。这些图像是灰度的,存储为numpy数组。感谢评论中的答案,这里有一个解决方案,它将图像保存为JPEG格式,并使用标准python库将其读回内存 import io import imageio # Image is 2D numpy array, q is quality 0-100 def jpeg

我正在用模拟图像训练神经网络,而现实生活中发生的事情之一就是低质量的JPEG压缩。它以一种特殊的方式使锋利的边缘变得模糊。有没有人有有效的方法来模拟这些效果?我的意思是创建一个干净输入的损坏版本。这些图像是灰度的,存储为numpy数组。

感谢评论中的答案,这里有一个解决方案,它将图像保存为JPEG格式,并使用标准python库将其读回内存

import io
import imageio

# Image is 2D numpy array, q is quality 0-100
def jpegBlur(im,q):
  buf = io.BytesIO()
  imageio.imwrite(buf,im,format='jpg',quality=q)
  s = buf.getbuffer()
  return imageio.imread(s,format='jpg')

在我的函数中,我还对图像进行了预缩放和后缩放,以将其从float64转换为uint8,然后再转换回来,但这是基本思想。

将它们作为低质量JPEG写入,然后重新读取,也许?我正在考虑,也许是写入ramdisk。模拟速度非常快,所以我不想用读/写磁盘来限制它。看看这里,看看如何使用
io.BytesIO
将JPEG写入内存。看起来我有一个使用imageio.imwrite()和imread()以及io.BytesIO的解决方案。谢谢,太好了!请随意写一个你自己问题的答案,让所有人都能看到和参考,然后接受它为正确的,并记下分数。。。很好。