c# - Blob 检测中的大位图图像内存分配,C# .Net

标签 c# .net opencv out-of-memory

我有像 14000x18000(~30MB) 高度和宽度的位图图像。我正在尝试使用不同的图像处理库(OpenCV(使用包装器 OpenCvSharp)、Aforge.NET..)来处理它们,以便进行 Blob 检测。但是,标记位图图像会导致内存分配问题。库尝试将标记的图像映射到 32 位图像。

有没有办法用更少的内存来进行标记操作? (裁剪图像不是解决方案)

例如将位图图像标记为 8 位图像而不是 32?

最佳答案

如果 8 位的东西没有答案……即使有……
出于速度和内存目的,我强烈建议缩小图像大小(而不是裁剪)。使用高质量的插值,如 this sample does ,仅调整为 50%,而不是缩略图(7.5MB 即时内存)。
您没有提到您不想这样做,我假设您可能不想尝试它,认为该库会在全分辨率下进行更好的 blob 检测。在你对这个想法嗤之以鼻之前,你需要测试一下 与样本图像的全分辨率子部分相比,库将处理的大小与 50% 的相同子部分相比。
除非你真的这样做过,否则你无法知道。您还可以计算图片可以使用的最大内存量,计算调整大小因子以针对该数字(为了安全而减少它 - 当测试中出现问题时,您会弄清楚这一点)。如果您关心这些东西在原始图像中的位置,请将其按比例放大。

关于c# - Blob 检测中的大位图图像内存分配,C# .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487328/

相关文章:

c# - .Net 中的对象处理

c# - 对自定义对象列表进行排序

.net - 使用 .net Winform Designer 时如何处理 UserControls 构造函数中的异常?

python - 如何优化此代码(python 中的双循环)?

c# - 尝试注册时出现 Microsoft.AspNetCore.Identity.IdentityError

c# - 读取和编辑 HttpResponseMessage 的内容

c# - 需要用于 MS UI 自动化的源代码 dll 的代码覆盖率信息

c# - 如何使用反射在 Winform 中托管 WPF 应用程序

android - OpenCV Android NDK 项目将无法构建

c++ - UMat 是否有 Mat 算术 + 运算符替代方案?