跑视频的时候内存蹭蹭往上涨,尬。
原来是Iplimage和Mat之间转化的时候,释放内存问题。
先引入浅拷贝和深拷贝问题。
- //IplImage—>Mat
- //EXAMPLE:
- //浅拷贝:
- IplImage* pBinary=cvLoadImage("c://temp.jpg",0);
- Mat Img;
- Img=cvarrToMat(pBinary);
- //深拷贝只需要再在Mat里创建一个新的Mat对象,然后进行数据的复制,再用上述的函数进行数据头的复制(浅拷贝):
- IplImage* pBinary=cvLoadImage("c://temp.jpg", 0);
- Mat ImgTemp;
- Img=cvarrToMat(pBinary);
- Mat Img = ImgTemp.clone();
- //Mat—>IplImage
- //EXAMPLE:
- //浅拷贝:
- Mat Img=imread("1.jpg");
- IplImage* pBinary = &IplImage(Img);
- //深拷贝只要再加一次复制数据:
- IplImage *input = cvCloneImage(pBinary);
浅拷贝是不需要释放内存的。这是我遇到的一个bug,释放我的是出现了报错。
深拷贝才需要释放内存。
- //IplImage—>Mat
-
IplImage* red_hsv = cvCreateImage(cvGetSize(car_light), 8, 3);
Mat img3 = Mat(red_hsv);
cvReleaseImage(&red_hsv);
- //Mat—>IplImage
- Size dsize = Size(128, 64);
Mat image2 = Mat(dsize, CV_8U); - IplImage *image3 = &IplImage(image2);