对于一个视频文件,如果用循环语句反复的调用VideoCapture::read(frame) 或者“>>”读图像时,会发生内存泄漏,程序崩溃。
int main()
{
cv::VideoCapture m_vp("D:\\testVideo.avi");
if(!m_vp.isopened)
{
std::cout<<"Read video failed!";
return -1;
}
cv::Mat frame;
int m_frameNum = m_vp.get(CV_CAP_PROP_FRAME_COUNT);
bool stop = false;
int count = 0;
while(!stop))
{
if(!m_vp.read(frame)) //当视频帧数很多,循环读数据 会导致内存泄漏
{
std::cout<<"Read frame failed!";
return -1;
}
count++;
if(char(c)==27||count>=m_frameNum)
stop = true;
}
return 0;
}
视频文件读取内存泄漏
本文介绍了一个关于使用OpenCV库中的VideoCapture类从视频文件中读取帧时可能出现的内存泄漏问题。当使用循环语句不断调用VideoCapture::read()方法时,程序可能会发生崩溃。文章提供了一个简单的示例代码,用于演示这一问题。
1250





