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

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

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

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

最佳答案

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

https://stackoverflow.com/questions/5487328/

相关文章:

python - OpenCV Python 库中的 cv.cornerSubPix 参数

visual-c++ - Opencv中cv MatchTemplate()函数的用法

visual-c++ - 如何在 IplImage 上使用 calcCovarMatrix?

opencv - opencv_gpu编译问题

iphone - iPhone中的OpenCV面部追踪器

opencv - “QImage with no type”编译错误消息

visual-c++ - Opencv中的相关函数

opencv - 如何在 OpenCV 中制作 double CvSeq?

docker - 如何避免使用太多容器来破坏 Docker?

c# - 如何在C#的Open CV中使USB摄像机工作?