TIFF imread()在Ubuntu 14.04中失败了std :: bad_alloc

时间:2014-08-07 20:20:40

标签: opencv tiff ubuntu-14.04

我安装了一个新的Ubuntu 14.04并使用cmake和gcc 4.8和-std = c ++ 11标志从源代码构建OpenCV。我在CMake-GUI中选择“With TIFF”和“Build TIFF”。简单的代码:

#include "opencv2/opencv.hpp"
int main(void)
{  
  Mat rst = cv::imread("test.tiff",0);
  cv::namedWindow("testCV");
  imshow("testCV",rst);
  cv::waitKey(0);
  return 0;
}

编译:

g++ -o testcv -I/usr/local/include testcv.cpp -lopencv_core -lopencv_highgui -std=c++11

当我运行它时,信息失败了:

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

我尝试编译OpenCV 2.4.9(发布)和3.0.0-dev(在GitHub中)源代码。但他们两个都有同样的失败。我尝试过PNG和JPEG,它们运行良好。问题是什么?这个操作系统是否有问题?我在Ubuntu 12.04中使用了相同的代码,它完全没有问题。

1 个答案:

答案 0 :(得分:1)

std::bad_alloc不是OpenCV特定的例外。当分配存储像素值的数组时,可能会发生这种情况。可能的原因

  • 您的图片太大而无法记忆
  • 阅读图像尺寸时,TIFF阅读器会感到困惑

由于您自己编译OpenCV,请在调试模式下编译并使用gdb进入imread函数。