Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不读取整个图像的OpenCV图像尺寸_C++_Image_Opencv - Fatal编程技术网

C++ 不读取整个图像的OpenCV图像尺寸

C++ 不读取整个图像的OpenCV图像尺寸,c++,image,opencv,C++,Image,Opencv,我正在使用OpenCV,正在读取千兆字节的图像——太多了,一次都无法放入内存。但是,我需要初始化一些需要图像维度的基本结构。目前,我正在使用imread,然后立即释放图像,这是非常低效的 有没有一种方法可以使用opencv在不读取整个文件的情况下获取图像尺寸?如果没有,你能推荐另一个库(最好是轻量级的,因为这就是它的全部用途)来解析标题吗?理想情况下,它至少支持与OpenCV相同的格式。我认为直接在OpenCV中不可能做到这一点 尽管文档中没有指定,但Java(和getWidth)只解析图像头,

我正在使用OpenCV,正在读取千兆字节的图像——太多了,一次都无法放入内存。但是,我需要初始化一些需要图像维度的基本结构。目前,我正在使用
imread
,然后立即释放图像,这是非常低效的


有没有一种方法可以使用opencv在不读取整个文件的情况下获取图像尺寸?如果没有,你能推荐另一个库(最好是轻量级的,因为这就是它的全部用途)来解析标题吗?理想情况下,它至少支持与OpenCV相同的格式。

我认为直接在OpenCV中不可能做到这一点

尽管文档中没有指定,但Java(和getWidth)只解析图像头,而不是整个图像

或者是一个外观合理的轻量级库,它肯定只检查标题,并且支持大量的图像格式


最后,如果您在Linux上,“identify”终端命令还将为您提供维度,您可以通过编程方式读取这些维度。

您可以使用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;
}
#包括
int main(int argc,char*argv[])
{
//设置/获取文件路径
自动dims=boost::gil::jpeg\u读取\u维度(文件路径);
整数宽度=dims.x;
内部高度=dims.y;
}
您必须通过向链接器添加-ljpeg标志来链接libjpeg。你可以得到更多的信息