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