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