Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >来自OpenCV imread的JPEG图像内存字节大小似乎不合适

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

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

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

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

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

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
运行
AI代码解释
复制
print("Image byte size :", round(sys.getsizeof(image) / (1024 * 1024), 2), "mb")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 23: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

复制
相关文章
图像处理笔记(2)----OpenCV imread函数详解
imread()读取图片文件,imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:
小火柴棒
2020/09/04
5.6K0
opencv的imread函数_opencv imwrite
Mat imread(const String& filename,int flags = IMREAD_COLOR);
全栈程序员站长
2022/11/04
6170
【从零学习OpenCV 4】图像读取函数imread
我们在前面已经见过了图像读取函数imread()的调用方式,这里我们给出函数的原型。
小白学视觉
2019/11/07
3.4K0
openCV._imread opencv
近日,开始学习图像处理,思前想后决定以opencv作为实验基础。遂完成图片读取和显示功能。Imread作为常用的图像读取函数,虽然简单,但是参数的选择非常重要,直接影响到后期处理。同时在调试学习过程中也可以学习到图像处理的知识。 1. 函数原型
全栈程序员站长
2022/11/07
6330
使用OpenCV测量图像中物体的大小
本文来自光头哥哥的博客【Measuring size of objects in an image with OpenCV】,仅做学习分享。
周旋
2022/08/07
2.7K0
使用OpenCV测量图像中物体的大小
OpenCV中原始图像加载与保存压缩技巧
OpenCV中关于图像读写有两个函数imread与imwrite,imread加载的时候支持灰度图像、彩色图像、原始图像加载,默认情况下通过imread加载的图像都是三通道的BGR彩色图像。 但是实际上OpenCV支持加载任意通道的图像,首先来仔细再看一下imread函数
OpenCV学堂
2018/12/07
2.1K0
OpenCV图像读取(imread) 显示(imshow) 保存(imwrite)的冷知识点
默认是IMREAD_COLOR 模式读取,会将图片转为3通道BGR彩图,读入进来type变成了CV_8UC3,如果你想以原本类型读取,那就选择IMREAD_UNCHANGED,那么图像原本是什么类型,读进来还是什么类型,这个参数主要在我们读取一些16位或者32为浮点型图像时就比较有用,因为一些计算需要这样的类型,有时候也为了计算提高精度。
Color Space
2020/08/11
1.9K0
OpenCV学习笔记:resize函数改变图像的大小
dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
全栈程序员站长
2022/07/23
1K0
解密 | OpenCV加载图像大小是有限制的 ?
最近有人问一个问题,就是它有个大小800MB的图像文件,发现无法通过OpenCV的imread函数加载,只要一读取,程序就直接崩溃了。我问了图像的大小,计算像素数量之后发现总像素数目已经超过了OpenCV声明最大像素数目限制,所以肯定无法读取了!
小白学视觉
2021/10/14
1.2K0
解密 | OpenCV加载图像大小是有限制的 ?
最近有人问一个问题,就是它有个大小800MB的图像文件,发现无法通过OpenCV的imread函数加载,只要一读取,程序就直接崩溃了。我问了图像的大小,计算像素数量之后发现总像素数目已经超过了OpenCV声明最大像素数目限制,所以肯定无法读取了!
OpenCV学堂
2020/03/10
9.4K0
解密 | OpenCV加载图像大小是有限制的 ?
解密 | OpenCV加载图像大小是有限制的 ?
最近有人问一个问题,就是它有个大小800MB的图像文件,发现无法通过OpenCV的imread函数加载,只要一读取,程序就直接崩溃了。我问了图像的大小,计算像素数量之后发现总像素数目已经超过了OpenCV声明最大像素数目限制,所以肯定无法读取了!
用户7118204
2020/04/06
1.2K0
OpenCV中保存不同深度图像的技巧
很多人开始学习OpenCV之后,接触前面几个API就包括imwrite函数,而且很快知道了如何去保存Mat对象为图像,常规代码如下:
OpenCV学堂
2019/06/10
10.9K1
OpenCV中保存不同深度图像的技巧
用 OpenCV 检测图像中各物体大小
在图像中测量物体的大小与计算从相机到物体之间的距离是相似的,在这两种情况下,我们需要定义一个比值,它测量每个给定指标的像素个数。
AI研习社
2018/07/26
3.9K0
用 OpenCV 检测图像中各物体大小
关于OpenCV for Python入门-图片和摄像头显示
OpenCV和Python结合的学习资料不多,网上的资料更是鱼目混杂,推荐大家OpenCV官方教程中文版 for Python,建议自行下载。
python与大数据分析
2022/04/02
1.4K0
关于OpenCV for Python入门-图片和摄像头显示
字节大小
首先看一个例子: 1 #include <iostream> 2 using namespace std; 3 4 class A{}; 5 6 class B 7 { 8 int b; 9 char c; 10 }; 11 12 class C 13 { 14 int c1; 15 static int c2; 16 }; 17 int C::c2 = 1; 18 19 class D:public C,public B{ 20 i
猿人谷
2018/01/17
7180
OpenCV基础02--从文件显示加载图像
在本节中,我将向您展示如何使用 OpenCV 库函数从文件加载图像并在窗口中显示图像。
软件架构师Michael
2023/09/11
2300
Python+OpenCV的图像读取、显示、保存
一、图像的读取 图像的读取主要函数是cv2.imread()。 函数格式:Mat cv::imread (const String & filename, int flags = IMREAD_COLOR) 功能:读取图片文件。 参数: windows位图:后缀名为bmp JPEG文件:后缀名为jpeg/jpg JPEG2000:后缀名为jp2 便携式网络图像文件:后缀名为png TIFF文件:后缀名为tiff/tif 参数二是整型的flag,标志,默认值为IMREAD_COLOR,取值有如下几种: IMREAD_UNCHANGED:如果设置,则按原样返回加载的图像(带有Alpha通道,否则会被裁剪)。 IMREAD_GRAYSCALE:如果设置,总是将图像转换为单通道灰度图像读入。 IMREAD_COLOR:如果设置,总是将图像转换为3通道BGR彩色图像读入。 IMREAD_ANYDEPTH:如果设置,当输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位。 IMREAD_ANYCOLOR:如果设置,图像将以任何可能的颜色格式读取。 IMREAD_LOAD_GDAL:如果设置,总是使用GDAL驱动程序加载图像。 IMREAD_REDUCED_GRAYSCALE_2:如果设置,总是将图像转换为单通道灰度图像,图像尺寸减小1/2。 IMREAD_REDUCED_COLOR_2:如果设置,总是将图像转换为3通道BGR彩色图像,图像尺寸减小1/2。 IMREAD_REDUCED_GRAYSCALE_4:如果设置,总是将图像转换为单通道灰度图像,图像尺寸减小1/4。 IMREAD_REDUCED_COLOR_4:如果设置,总是将图像转换为3通道BGR彩色图像,图像尺寸减小1/4。 IMREAD_REDUCED_GRAYSCALE_8:如果设置,总是将图像转换为单通道灰度图像,图像尺寸减小1/8。 IMREAD_REDUCED_COLOR_8:如果设置,总是将图像转换为3通道BGR彩色图像,图像尺寸减小1/8 常用的是前三种。因为flags是整型,所以传入数值也行: flags >0:等同于IMREAD_COLOR。 flags =0:等同于 IMREAD_GRAYSCALE。 flags <0: 等同于IMREAD_UNCHANGED。 通常是给1、0、-1,给其他整型也是可以的。 返回值:Mat类型。从opencv2开始,用于存放图像的数据类型就是Mat, 二、图像的显示 图像读取后,下一步就是再把图像显示出来,主要函数有:cv2.namedWindows()、cv2.imshow()。再另外再介绍三个函数cv2.waitKey()、cv2.destroyWindow()、cv2.destroyAllWindows()。 2.1 cv2.namedWindows函数介绍 void cv::namedWindow (const String & winname,int flags = WINDOW_AUTOSIZE ) 功能:创建一个窗口。 参数:参数一是winname,给创建的窗口起一个名字,以后通过这个名字调用该窗口;参数二整型的flags,定义窗口的属性,默认值是WINDOW_AUTOSIZE,其他取值如下所示: WINDOW_NORMAL:用户可以调整窗口大小(不受约束)/也可以使用将全屏窗口切换为正常大小。 WINDOW_AUTOSIZE:用户无法调整窗口大小,窗口大小随显示图像的大小而变化。 WINDOW_OPENGL:带有opengl支持的窗口。 WINDOW_FULLSCREEN:将窗口更改为全屏。 WINDOW_FREERATIO:不遵循图像的比例调整图像后在窗口显示 WINDOW_KEEPRATIO:根据图像的比例调整图像后在窗口中显示 2.2 cv2.imshow函数介绍 void cv::imshow (const String & winname, InputArray mat ) 功能:在指定窗口显示图像。 参数:参数一是窗口名;参数二设置为要显示的图像。 注意此函数之后应该跟随函数waitKey,指定窗口显示多少毫秒。 2.3 cv2.waitKey函数介绍 int cv::waitKey (int delay = 0) 功能:等待按键或延迟多少毫秒。 参数:整型的delay,默认值是0。设置为0表示永久等待按键,设置为非零,表示延迟delay毫秒。该函数仅在创建至少一个窗口并且窗口处于活动状态时才起作用。 2.4 cv2.destroyWind
菲宇
2019/11/12
3.7K0
解密隐藏JPEG图像中的数据
我只会解释这个hexdump解释相关的部分。这里只有几个重要的字节来实现我们在这篇博客文章中试图做的事情。
半月弧
2020/07/15
2.5K0
解密隐藏JPEG图像中的数据
imread怎么读取图片_opencv读不到图片
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
1.5K0
点击加载更多

相似问题

来自openCV的imread使图像变暗

24

内存中的OpenCV jpeg格式图像

20

opencv - imread返回错误大小

10

Python - OpenCV - imread -显示图像

30

OpenCV - imread(),imwrite()增加png的大小?

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文