0

我有一个 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;
}
4

0 回答 0