Image 循环和位图:循环时如何处理emgu图像(bgr,字节)?
在for…next循环中,如何处理位图和图像 特别是Image 循环和位图:循环时如何处理emgu图像(bgr,字节)?,image,bitmap,dispose,emgucv,Image,Bitmap,Dispose,Emgucv,在for…next循环中,如何处理位图和图像 特别是图像(bgr的字节)图像 “图像(bgr,字节)”图像来自emgu库 处置单个位图或图像时,Dispose()命令可以正常工作 但当您在多个图像中循环时,会出现Outofmemory错误 即使在应用时使用。。。如果使用命令结束,则会出现内存问题 例如,这将为我抛出内存错误: Dim pic As Bitmap = New Bitmap(270, 100) For i = 0 to 100 Dim CleanImage As New Im
图像(bgr的字节)
图像
“图像(bgr,字节)”图像来自emgu库
处置单个位图或图像时,Dispose()
命令可以正常工作
但当您在多个图像中循环时,会出现Outofmemory错误
即使在应用时使用。。。如果使用
命令结束,则会出现内存问题
例如,这将为我抛出内存错误:
Dim pic As Bitmap = New Bitmap(270, 100)
For i = 0 to 100
Dim CleanImage As New Image(Of Bgr, Byte)(pic)
'this command comes from the emgu library - tesseract
OCRz.Recognize(CleanImage)
CleanImage.Dispose()
Next
我也将:
Dim pic As Bitmap = New Bitmap(270, 100)
For i = 0 to 100
Using CleanImage As New Image(Of Bgr, Byte)(pic)
OCRz.Recognize(CleanImage)
End Using
Next
我试过GC.Collect()
。这不管用
我如何正确地去除程序中这些恼人的位图和图像
我迫切需要一个解决办法
emgu wiki声明如下:
图像类的自动垃圾收集
自动处理内存管理和垃圾
收藏
一旦垃圾收集器决定不再引用
图像对象,它将调用Disposed方法,
这将释放非托管IplImage结构
垃圾回收器决定处理映像的时间不确定
放心。使用大图像时,建议调用
Dispose()方法显式释放对象。或者,使用
使用C#中的关键字来限制图像的范围
using (Image<Gray, Single> image = new Image<Gray, Single>(1000, 800))
{
... //do something here in the image
} //The image will be disposed here and memory freed
使用(图像=新图像(1000800))
{
…//在图像中执行某些操作
}//将在此处处理映像并释放内存
这正是我正在做的。然而,我收到了这个OutOfMemory例外。发生了什么事