gpt4 book ai didi

.net - OpenCV随机图像加载错误

转载 作者:行者123 更新时间:2023-12-02 17:50:17 25 4
gpt4 key购买 nike

我正在使用 emgu opencv 2.4.2 版来处理从 720p 视频中提取的一系列 PNG 图像。我使用此代码读取图像:

image = new Image<Bgr, byte>(filename);

在我的 PNG 序列中的随机图像中,我得到:
Convertion from Image<Emgu.CV.Structure.Bgra, System.Byte> to
Image<Emgu.CV.Structure.Bgr, System.Byte> is not supported by OpenCV

表示输入图像具有 alpha channel ,不能直接读取为 24 位图像结构。

但是,同一图像上永远不会发生异常。所以,下次我运行程序时,它可能会被很好地读取。异常通常发生在 PNG 序列中很远的地方,比如第 300 帧。其他时候它运行良好到后面的帧。但它通常会在帧 300-320 附近停止。

我在这里没有做任何可能导致看似随机问题的线程,它是一个非常基本的程序,读取一个图像,对其进行一些基本修改,然后将其保存到另一个文件。

我想一种解决方法是简单地捕获异常并重试,但这似乎很困惑。

我在这里有什么遗漏吗?

最佳答案

原来问题是垃圾收集器不会自动清理 OpenCV Image 对象,您需要通过 image.Dispose() 手动完成。可能是因为它链接到一个 Bitmap 对象,由于它的 native 实现,它不会被自动清理。

我得到的异常具有误导性,问题是由内存泄漏引起的,最终导致序列中的下一个图像无法成功加载。

关于.net - OpenCV随机图像加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com