获取OpenCV错误:运行OpenCV示例程序时内存不足示例程序:“stitching_detailed.cpp”
我最近开始与OpenCV一起工作,目的是拼接大量图像以创建大量全景图。为了开始我的实验,我查看了OpenCV文件附带的示例程序,以了解如何实现OpenCV库。由于我对图像拼接感兴趣,我直接去了“stitching_detailed.cpp”。该代码可以在这里找到:获取OpenCV错误:运行OpenCV示例程序时内存不足示例程序:“stitching_detailed.cpp”
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/stitching_detailed.cpp?rev=6856
现在,这个程序做了大部分的什么,我需要它做的事,但我遇到了一些有趣的事情。我发现了9个的可选投影整经机的15日,我收到以下错误,当我尝试运行程序:
Insufficient memory (Failed to allocate XXXXXXXXXX bytes) in unknown function,
file C:\slave\winInstallerMegaPack\src\opencv\modules\core\src\alloc.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;
}
所以,我错过了这个错误可能发生的可能原因。我意识到如果系统内存不足,通常会发生此错误,但根据我的任务管理器,当使用测试映像运行此程序时,我从不使用更多〜3.5GB的RAM。
此外,由于该程序是作为OpenCV开发人员的OpenCV拼接功能的样本编写的,我发现很难相信源代码中存在严重的内存错误。
最后,如果我使用了一些扭曲方法程序正常工作:
- spherical
- fisheye
- transverseMercator
- compressedPlanePortraitA2B1
- paniniPortraitA2B1
- paniniPortraitA1.5B1)
但让程序使用任何其他的(通过命令行标签
--warp [PROJECTION_NAME ]):
- plane
- cylindrical
- stereographic
- compressedPlaneA2B1
- mercator
- compressedPlaneA1.5B1
- compressedPlanePortraitA1.5B1
- paniniA2B1
- paniniA1.5B1
我收到上面提到的错误。我从横向墨卡托投影仪得到了相当不错的结果,但我想特别测试立体效果。任何人都可以帮我解决这个问题吗?
,我试图处理这些照片是1360×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:\slave\winInstallerMegaPack\src\opencv\modules\core\src\alloc.cpp,
line 52
的时候,只有70%左右我的RAM(6G)的pecent被占领。当runnig逐步训练时,我发现错误会被抛出。当它使用大于1.5G的RAM空间时。 然后,我发现有两个参数可以控制多少内存应使用:
-precalcValBufSize -precalcIdxBufSize so i tried to set these two to 128, it run. I hope my experience can help you.
我想这个问题是一无所知内存泄漏,它只是涉及到操作系统多少内存限制了应用程序占用。我希望有人可以检查我的猜测。
这可能与拼接的顺序有关,我将大图分割成3 * 3,首先我将它们逐行拼接,没有问题,当我将它们逐列拼接时,问题和你一样。
这应该可能是一条评论。 – Robert 2014-08-05 09:45:05