学习opencv——乱释放内存的Bug,IplImage
来源:互联网 发布:yum wget 编辑:程序博客网 时间:2024/05/16 08:23
写第一个opencv程序时候,有个Bug,花了半个多小时都找不出来,最后到网上寻求帮组才知道问题所在。
使用cvQueryFrame()取出CvCapture*每帧图像,只需在最后释放CvCapture*,不需要释放IplImage*
#include <opencv2\opencv.hpp>
#include <iostream>#include <string>
using namespace cv;
using namespace std;
int main()
{
char* windowTitle="test1";
const char* videoName="D:\\myFirstVideo1.avi";
CvCapture* capture=0;
IplImage* frame = 0;
capture=cvCaptureFromCAM(0);
double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
frame = cvQueryFrame( capture );
cvWaitKey(100);
CvVideoWriter* writer = 0;
int isColol=1;
writer=cvCreateVideoWriter(videoName,-1,fps,cvSize(frame->width,frame->height),isColol);
cvNamedWindow(windowTitle,CV_WINDOW_AUTOSIZE);
for(int i=0;;i++)
{
frame =cvQueryFrame(capture);
cvWriteFrame(writer,frame);
cvShowImage(windowTitle,frame);
if(cvWaitKey(1) == 'q')
break;
std::cout<<i<<std::endl;
}
std::cout<<"writer"<<std::endl;
cvReleaseVideoWriter(&writer);
std::cout<<"wcapture"<<std::endl;
cvReleaseCapture(&capture);
std::cout<<"windowTitle"<<std::endl;
cvDestroyWindow(windowTitle);
// 1. 从CvCapture里cvQueryFrame得到的
// 这样获得的图像无需释放,并且不能对这样获得的图像做任何数据操作,一般获得这样的图像后,先copy下来,再对copy版图像做操作。
return 0;
}
0 0
- 学习opencv——乱释放内存的Bug,IplImage
- OpenCV的cvReleaseImage释放内存出错解决方法及Mat格式与IplImage格式相互转换
- 《学习opencv》笔记——IplImage数据结构
- OpenCV学习笔记(二)—IplImage数据结构
- 利用OpenCv读取视频时释放IplImage结构的问题
- 切记!治病不可乱投医—bug bug的一天
- IplImage* cvCapture* 的释放
- opencv——IplImage结构
- 学习OpenCV——Kmeans2算法并验证颜色种类(CvMat*&IplImage*指针的用法)
- opencv学习_5 (IplImage的结构)
- opencv学习_5 (IplImage的结构)
- 【OpenCV】有关内存释放的一些问题
- 【OpenCV】有关内存释放的一些问题
- 【OpenCV】有关内存释放的一些问题
- 【OpenCV】有关内存释放的一些问题
- 【OpenCV】有关内存释放的一些问题
- opencv-有关内存释放的一些问题
- 【OpenCV】有关内存释放的一些问题
- JAVA解析XML文件
- 语音发送UI
- Java 换行 /r/n
- Makefile 中:= ?= += =的区别(转)
- Java中设置session超时的3种方式
- 学习opencv——乱释放内存的Bug,IplImage
- php将UTc时间转换为北京时间
- C++的头文件和实现文件分别写什么
- 一些影响情绪的激素
- select count(*)和select count(1)的区别
- IOS批量打包工具
- Path Sum
- UVA10917 路径统计
- 数据挖掘实验(SAS)聚类