收到 OpenCV 错误:运行 OpenCV 示例程序时内存不足:"stitching_detailed.cpp"
Getting OpenCV Error: Insufficient memory while running OpenCV Sample Program: "stitching_detailed.cpp"
我最近开始使用OpenCV,目的是将大量图像拼接在一起,以创建巨大的全景图。为了开始我的实验,我查看了OpenCV文件附带的示例程序,以了解如何实现OpenCV库。由于我对图像拼接感兴趣,我直接选择了"stitching_detailed.cpp"
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/stitching_detailed.cpp?rev=6856
现在,这个程序完成了我需要它做的大部分事情,但我遇到了一些有趣的事情。我发现,对于15架可选投影翘曲机中的9架,当我尝试运行程序时,我收到以下错误:
Insufficient memory (Failed to allocate XXXXXXXXXX bytes) in unknown function,
file C:slavewinInstallerMegaPacksrcopencvmodulescoresrcalloc.cpp,
line 52
其中"X"标记在不同类型的投影之间变化的整数(就好像不同的方法需要不同的空间量)。"alloc.cpp"的完整源代码可以在以下网站上找到:
https://code.ros.org/trac/opencv/browser/trunk/opencv/modules/core/src/alloc.cpp?rev=3060
然而,在alloc.cpp中发出此错误的代码行是:
static void* OutOfMemoryError(size_t size)
{
--HERE--> CV_Error_(CV_StsNoMem, ("Failed to allocate %lu bytes", (unsigned long)size));
return 0;
}
所以,我只是不知道这个错误可能发生的原因。我意识到,如果系统内存不足,通常会发生这种错误,但根据我的任务管理器,当我用测试映像运行这个程序时,我使用的RAM从未超过~3.5GB。
此外,由于该程序是作为OpenCV开发人员编写的OpenCV缝合功能的示例编写的,我发现很难相信源代码中存在严重的内存错误。
最后,如果我使用一些翘曲方法,程序运行良好:
- spherical
- fisheye
- transverseMercator
- compressedPlanePortraitA2B1
- paniniPortraitA2B1
- paniniPortraitA1.5B1)
但要求程序使用其他任何一个(通过命令行标记
--warp[PROJECTION_NAME]):
- plane
- cylindrical
- stereographic
- compressedPlaneA2B1
- mercator
- compressedPlaneA1.5B1
- compressedPlanePortraitA1.5B1
- paniniA2B1
- paniniA1.5B1
我收到上面提到的错误。我从transverseMercator项目中得到了很好的结果,但我想特别测试一下立体图。有人能帮我弄清楚吗?
我试图处理的图片分辨率为1360 x 1024,我的电脑有以下统计数据:
Model: HP Z800 Workstation
Operating System: Windows 7 enterprise 64-bit OPS
Processor: Intel Xeon 2.40GHz (12 cores)
Memory: 14GB RAM
Hard Drive: 1TB Hitachi
Video Card: ATI FirePro V4800
如有任何帮助,我们将不胜感激,谢谢!
当我运行OpenCV的APP traincascade时,我得到的错误与您相同:
Insufficient memory (Failed to allocate XXXXXXXXXX bytes) in unknown function,
file C:slavewinInstallerMegaPacksrcopencvmodulescoresrcalloc.cpp,
line 52
当时,我只有大约70%的内存(6G)被占用。当一步一步地运行trainscascascade时,我发现当它使用超过1.5G的RAM空间时,错误就会抛出。然后,我发现有两个参数可以控制应该使用多少内存:
-预制阀门BufSize-预制IdxBufSize所以我试着把这两个设置为128,它运行了。我希望我的经验能帮助你。
我认为这个问题与内存泄漏无关,它只是与操作系统限制应用程序占用的内存数量有关。我希望有人能核实我的猜测。
我最近在OpenCV图像拼接方面遇到了类似的问题。我使用了create方法来创建缝合器实例,并提供了5个垂直顺序的图像来缝合方法,但我收到了内存不足的错误。
全景在设置后成功创建:
setWaveCorrection(false)
如果您需要波浪校正,此解决方案将不适用。
这可能与缝合的顺序有关,我把一张大图分成3*3,首先我逐行缝合,没有问题,当我逐行缝合时,也有和你一样的问题。
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- OpenCV C++.快速计算混淆矩阵
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 哪些库可以通过Opencv调整曝光率
- 安装opencv失败-粘贴CMakeError.log的内容
- C++中的openCV Mat访问冲突
- OpenCV Android C++ imwrite not found
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 如何使用OpenCV-C++编写*.mp4视频?
- OpenCV Stitching