在Docker容器内部运行的opencv3.0内存不足错误

OpenCV错误:OutOfMemoryError中内存不足(无法分配995522496字节)。

base_features, base_descs = detector.detectAndCompute(base_img, None) 

在这个特定的行中,base_desc的长度(“len(base_descs)”)大约是70000. base_desc是一个numpy数组。 我目前使用4 GB的RAM,但仍然显示这个错误。

我正在docker容器内运行此代码,上面的代码工作正常,当我运行python代码而不使用系统中的容器。

首先,尝试运行一些docker stats以查看容器进程执行期间的内存使用情况和容器限制。

然后,尝试增加容器的内存限制( -m ):请参阅“ 如何衡量Docker中的性能?

正如VonC所build议的,我试着运行docker统计。 我运行我的容器,并做了docker统计检查我的容器的统计数据,内存使用增加了我的容器,但有5.028GB的限制,可以看到下面

  CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O gigantic_cori 0.02% 4.6 GB / 5.028 GB 2.02% 44.43 MB / 20.51 MB 580.2 MB / 3.196 GB 

因此,增加RAM将是上述问题的解决scheme或优化代码,从而降低RAM的要求。 上面的问题发生在容器内部,因为运行在Guest OS(Ubuntu14.04)内的容器只有4GB的RAM,而当我在Host OS(Windows 8.1)中运行代码时,它拥有的RAM是8GB,错误没有到达那里。