OpenCV:使用 cvWriteFrame 从网络摄像头写入视频时内存泄漏
OpenCV: Memory leak when writing video from webcam using cvWriteFrame
我想使用opencv从网络摄像头录制视频。
我将以下代码放入计时器事件处理程序函数中,该函数每 50 毫秒调用一次
IplImage *image = cvQueryFrame(camera);
IplImage *resizeImage = cvCreateImage( size, 8, 3);
cvResize(image, resizeImage);
cvWriteFrame(writer, resizeImage );
使用cvCreateVideoWriter创建writer,当我调用cvReleaseVideoWriter(&writer)时创建视频
问题是在调用cvReleaseVideoWriter之前,我无法释放cvWriteFrame分配的内存。当我需要录制长时间的视频时,这是一个大问题。
我该如何处理这种情况?
我想在您
的情况下(如果您不想修改 OpenCV 代码)的最佳解决方案是编写多个视频文件。
我可以假设,每一帧都被按原样抓取到 RAM,没有任何压缩。因此,您可以在分配的内存量超过特定大小之前计算帧数。然后,您完成对文件的写入并开始一个新文件。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 开放 CV 中的动态内存分配,用于视频处理
- OpenGL 调试上下文警告 -"将使用视频内存作为缓冲区异议的来源
- 媒体基础 多个视频播放导致内存泄漏和崩溃
- 超过DirectX11视频内存
- 在内存上写视频OpenCV2
- 如何在C程序中直接更改视频内存映射来绘制像素(无库函数)
- 将反向缓冲直接复制到视频内存
- OpenCV:使用 cvWriteFrame 从网络摄像头写入视频时内存泄漏
- 如何防止操作系统刷新视频内存
- 问题与OpenCV 3.0 -录制视频内存泄漏
- 程序可以在视频上运行,但不能在本地运行(可能是内存错误)
- 如何在(视频)内存中创建缓冲区以使用OpenGL绘制
- 视频内存从ETC2纹理压缩在OpenGL 4.3
- 一个有效的方式来缓冲高清视频实时没有最大的内存