我安装了一个新的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中使用了相同的代码,它完全没有问题。
答案 0 :(得分:1)
std::bad_alloc
不是OpenCV特定的例外。当分配存储像素值的数组时,可能会发生这种情况。可能的原因
由于您自己编译OpenCV,请在调试模式下编译并使用gdb进入imread函数。