OpenCV图像尺寸,而不读取整个图像
OpenCV image dimensions without reading entire image
我正在使用OpenCV,正在读取千兆字节的图像——太多了,一次无法放入内存。然而,我需要初始化一些需要图像尺寸的基本结构。目前我正在使用imread
,然后立即释放图像,这真的很低效。
有没有一种方法可以在不读取整个文件的情况下使用opencv获得图像尺寸?如果没有,你能建议另一个可以解析头的库(最好是轻量级的,因为这就是它的全部用途)吗?理想情况下,它将支持至少与OpenCV一样多的格式。
我认为这在opencv中是不可能的。
虽然文档中没有指定,但Java的ImageReader.getHight(和getWidth)只解析图像头部,而不是整个图像。
或者,这里有一个看起来合理的轻量级库,它肯定只检查标题,并支持大量的图像格式。
最后,如果您在Linux上,"identify"terminal命令还会为您提供维度,然后您可以通过编程读取这些维度。
您可以使用boost gil:
#include <boost/gil/extension/io/jpeg_io.hpp>
int main(int argc, char *argv[])
{
//set/get file_path
auto dims = boost::gil::jpeg_read_dimensions(file_path);
int width = dims.x;
int height = dims.y;
}
您必须通过在链接器中添加-ljpeg标志来链接libjpeg。你可以在这里获得更多信息。
相关文章:
- 增加 gil 读取图像错误
- 如何使用 OpenImageIO 和 read_tiles() 读取平铺图像
- 在 matlab 中调用 opencv 的图像时,无法读取 C++ 中的图像
- 这是我的程序,C++使用 OpenCv 库从数据集中读取图像序列,但它没有运行
- 如何以CV_16UC1的方式读取JPG图像并在屏幕上打印?
- 使用 qt 从 postgres 读取和写入图像(大对象)
- 如何从内存中读取原始图像 (YUV 4:2:2) 格式的图像数据
- 如何在Visual Studio中使用ITK配置的C 读取图像
- 通过插座读取Python中的OpenCV图像
- C 读取/写作PPM图像文件灰色图像
- 如何在Android NDK中的硬盘驱动器中读取图像
- OpenCV 3.2.0:读取 Canny 图像以训练 SVM
- 如何在VTK DICOM阅读器中读取图像类型(0008,0008)
- 使用C++程序中的拉斯皮斯蒂尔读取相机图像
- 从C 中的文件中读取图像,然后传递到Libharu的绘制方法
- 如何在OpenCV中将图像读取为双精度
- 将图像读取为二进制文件
- C++ 模板复杂图像读取类执行时间慢,声明和实现分离
- 如何将opencv图像读取为咖啡格式以进行实时预测
- 将字节数组从位图图像读取到坐标X和Y中