cvLoadImage,cvCreateImage,cvReleaseImage C/C++ 學習日記

本次介紹一下三個函數。
cvLoadImage(加載) cvCreateImage(創建) cvReleaseImage(釋放)

爲什麼要釋放?釋放要注意什麼?
在一個大循環中使用cvLoadImage(),不及時釋放,內存會佔滿。
cvReleaseImage()可以釋放cvCreateImage()加載的圖像。
cvReleaseImage()無法釋放cvLoadImage()加載的圖像。
使用順序

IplImage* img1 = cvLoadImage("1.jpg");
IplImage* cutImg1 = cvCreateImage(CvSize, 
								  IPL_DEPTH_8U, 
								  img1->nChannels);
CutIplImage(img1, cutImg1, 0, 0);

// 此處是對cutImg1進行操作的代碼
// 操作後即可釋放圖片

cvReleaseImage(&cutImg1);

分解看

IplImage* img1 = cvLoadImage("1.jpg");

圖片加載

IplImage* cutImg1 = cvCreateImage(CvSize, 
								  IPL_DEPTH_8U, 
								  img1->nChannels);

函數cvCreateImage創建圖像首地址,並分配存儲空間。

CvSize是一個帶有寬度和高度的結構體。
depth是像素的位深度,值一般爲8
(即IPL_DEPTH_8U - 8位無符號整數)
channels是圖像通道數(RGB爲3,灰度爲1)

CutIplImage(img1, cutImg1, 0, 0);

關於這個函數我在這裏寫的很明白

cvReleaseImage(&cutImg1);

確定圖片不用後,釋放圖片內存。

歡迎評論交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章