opencv imread能够加载巨大的PGM文件吗?还有替代品吗?

时间:2013-09-08 18:48:21

标签: c++ image opencv memory

我有一个10GB的PGM文件,当我尝试使用cv :: imread加载它时,我收到以下消息:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

这很奇怪,因为这个图像是用opencv imwrite创建的。这是预期的吗?我在文档中没有发现任何提及任何限制的内容。这种方法有替代方法吗?

错误发生在具有64GB RAM的Linux机器上,大部分都是免费的。万一有人可能想检查,下面是我写的程序。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc, char* args[])
{
    if (argc != 2)
    {
        return 1;
    }

    cv::Mat img = cv::imread(args[1], cv::IMREAD_GRAYSCALE);
    if (img.data == 0)
    {
        return 2;
    }

    std::cout << img.rows << " - " << img.cols;

    return 0;
}

0 个答案:

没有答案