加载后图像大小增加
Image size increases after loading
我有一个RGB JPEG图像,重约11 MB,分辨率为7680 x 4320。我使用 uchar4 数组将其存储在 RAM 中。sizeof(uchar4) 是 4 个字节,这是合乎逻辑的。不难计算出,我使用的数组大小为 4 x 7680 x 4320 = 132710400 字节 = [大约] 126 MB。那么为什么图像存储在硬盘驱动器上时仅重 11 MB,加载到 RAM 后重 126 MB。
所以实际上你的问题是为什么图像大小存储在磁盘上时更小,因为内存中的大小实际上是你期望的,对吧?
不幸的是,您没有告诉我们使用哪种文件格式来存储图像,但基本上所有常见的图像格式都不会按原样存储像素值。他们首先应用压缩算法。PNG 或 GIF 等某些格式使用无损压缩,JPEG 等其他格式使用有损压缩,这意味着每当存储图像时,图像质量都会略差。但是,这些格式允许更好的压缩。
所有压缩算法都依赖于图像像素不(统计上)彼此独立的事实。附近的像素通常是相关的。此关联用于减少数据量。由于不同的图像通常具有不同的相关性,因此即使像素数相同,图像文件大小也会有所不同。
相关文章:
- 数组索引的值没有增加
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 为什么我的代码在输出中增加了93天
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 有效地使用std::unordered_map来插入或增加键的值
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++ 动态数组每次添加时将大小增加 1 - 错误
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 增加 gil 读取图像错误
- 加载后图像大小增加
- ios OpenCV增加图像大小