使用cvCreateFileCapture和cvQueryFrame打开OpenCV内存

时间:2017-08-30 11:42:31

标签: c++ opencv memory-leaks video-capture

我是OpenCV的新手(OpenCV 3.2 / opencv_ffmpeg320_64.dll / Windows 10 / Visual Studio 2017)并编写了一个处理网络摄像头视频流的程序。不幸的是,程序有内存泄漏。经过几个小时的搜索和谷歌搜索,我设法将问题分解为以下最小的例子:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <thread>

CvCapture *capture;
IplImage *frame;

int main(int argc, char **argv)
{
    capture = cvCreateFileCapture("http://192.168.1.123:8080/CamStream");

    while (true)
    {
        cvWaitKey(1);

        frame = cvQueryFrame(capture);
        if (frame)
        {
            std::cout << "New image" << std::endl;
        }
    }

    return 0;
}

正如您所看到的,我正在捕获一个简单的HTTP流。创建捕获后,将接收新帧。不幸的是,任务管理器显示了永不停止的内存增加:

Process

什么可能导致这个问题,有什么方法可以解决它?

0 个答案:

没有答案