gpt4 book ai didi

c++ - cvLoadimage 在运行时停止工作

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:21 26 4
gpt4 key购买 nike

我从事图像识别程序已有一段时间了,但突然我注意到,当我长时间测试我的程序时,函数 cvLoadImage 有时会停止返回图像。我看不到发生这种情况的明确模式或时间,但在它失败一次后,它将在程序的其余部分继续失败,直到我再次重新启动。这段代码只偶尔运行一次来​​更新我的用户界面。

我的代码:

IplImage* UIframe = cvLoadImage("../images/background.jpg", CV_LOAD_IMAGE_COLOR);
if(UIframe) {
//do stuff
} else {
cout<<"Image not loaded"<<endl;
}
cvReleaseImage(&UIframe);

我已经找到了几个我检查过的 cvLoadImage 失败的原因:

  • 路径是静态的,并且在程序的早期工作,所以文件就在那里
  • 我释放图像并且没有其他内存泄漏导致此
  • .jpg 在尝试加载时未更新
  • 我已经安装了所有正确的库,因为 cvLoadImage 正在运行

一个解决方案是只加载一次图像并不断从内存中更新它,但我想找出发生这种情况的原因以及如何解决这个问题。

最佳答案

您使用的是最新的 OpenCV (2.3.1) 吗?

另一件需要注意的事情是,无论 //do stuff 中有什么,它都可能会产生内存泄漏,一段时间后 cvLoadImage() 会失败,因为您的系统根本没有足够的内存来加载新图像。

事实是,有一个简单的测试可以发现问题是在 OpenCV 中 还是在您的代码中:编写一个最小的应用程序来加载同一图像 N 次。除了调用 cvLoadImage() 后跟 cvReleaseImage() 之外,不要在循环内做任何事情。

如果这个简单的应用程序失败,则可能是 OpenCV 方面的问题。否则,您就知道自己的代码有问题。

关于c++ - cvLoadimage 在运行时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10312676/

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