加载到numpy中时,为什么磁盘上大小为9 MB的映像在RAM中占用125 MB?

时间:2018-08-23 10:15:07

标签: python image numpy opencv scikit-image

Link to the image in question

让我重现我所面临的问题。

from skimage import io
image = io.imread("https://github.com/thalishsajeed/PythonLearn/raw/master/Houston_Chronicle__May_19_2018_51.jpg")
print((image.nbytes/(1024*1024)))

结果:125.87553691864014

那么,使用skimage将9.45 MB文件加载到numpy数组中时,125 MB文件会爆炸吗? (我也可以使用openCV的cv2.imread函数复制相同的结果)

我想这与JPEG压缩有关,但是如果有人可以提供更详细的解释,我将非常感谢。

1 个答案:

答案 0 :(得分:4)

因为它是JPG图像文件,所以是压缩图像格式。您的图像分辨率为6633x6633,它是彩色图像。意思是:
像素数= 6633 * 6633
总字节大小= 6633 * 6633 * 3(RGB,每个彩色像素为1字节)
约125 mb