首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >来自OpenCV imread的JPEG图像内存字节大小似乎不合适

来自OpenCV imread的JPEG图像内存字节大小似乎不合适
EN

Stack Overflow用户
提问于 2018-12-04 06:57:37
回答 1查看 2.7K关注 0票数 1

使用OpenCV,每当我将图像(从照相机流中)保存为JPG到磁盘。磁盘上的文件大小(以字节为单位)与预期的JPEG质量不同。

但是,无论磁盘上的文件大小如何,每当我读取图像时,内存大小都保持不变。这是正常的吗?

而且,图像的磁盘和内存大小似乎有很大的不同。我原以为内存大小要小得多,相对于磁盘大小而言。

例如:

代码语言:javascript
代码运行次数:0
运行
复制
import sys
import cv2

cv2.imwrite('temp.jpg', frame, [int(cv2.IMWRITE_JPEG_QUALITY), 10])
# disk size of temp.jpg is 24kb

image = cv2.imread('temp.jpg')
# memory size is 2.7 mb

cv2.imwrite('temp.jpg', frame, [int(cv2.IMWRITE_JPEG_QUALITY), 90])
# disk size of temp.jpg is 150kb

image = cv2.imread('temp.jpg')
# memory size is still constant at 2.7 mb

我是这样计算内存大小的:

代码语言:javascript
代码运行次数:0
运行
复制
print("Image byte size :", round(sys.getsizeof(image) / (1024 * 1024), 2), "mb")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 07:05:56

是的,这是完全正常的。所有的图像格式实际上都是压缩m x n RGB矩阵数据的不同方式。就空间而言,JPG相对于PNG更好。还请注意,这种相对行为的代价是:JPG是有损压缩技术,而PNG是无损压缩技术。

当我们从磁盘读取JPGPNG映像时,首先对其进行解压缩,然后填充矩阵数据。内存中的大小总是:m x n x 3字节,但是根据所使用的压缩格式、使用的压缩级别等,磁盘大小会有所不同。具有单一颜色的图像在JPG格式下所占的空间将比具有大量颜色的图像(梯度图像)占用的空间小得多。但是这两个图像的内存大小是相同的:m x n x 3字节。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53607289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档