【发布时间】:2012-02-25 03:21:21
【问题描述】:
我对从cvQueryFrame 返回的IplImage* 有疑问...它的内存永远不会被库释放。文档说:
返回的图片不应被用户发布或修改。
嗯……我该如何恢复记忆?程序会吃掉内存,直到崩溃。我想在帧处理完成后为每个 IplImage* 释放分配的内存。代码是这样的:
// In `process` thread:
CvCapture* camera;
camera = cvCreateCameraCapture(1);
assert(camera);
while(true)
{
main = cvQueryFrame(camera);
// Do something useful with images
emit sendImage(main); // Send Image to the UI thread
}
更新:
这是QThread 子类:
#include <QThread>
class ImageFetcher : public QThread
{
Q_OBJECT
public:
explicit ImageFetcher(QObject *parent = 0);
signals:
void run();
public slots:
};
实施:
void ImageFetcher::run()
{
CvCapture* camera = cvCreateCameraCapture(0);
IplImage* image;
while(true)
{
image = cvQueryFrame(camera);
// process image
}
// exec();
}
main():
int main(int argc, char *argv[])
{
QApplication a(argc,argv);
ImageFetcher thread;
thread.start();
return a.exec();
}
【问题讨论】:
标签: c++ memory-management memory-leaks opencv