OpenCV學習筆記——圖像的腐蝕與膨脹


順便又復習了一下cvcopy如何進行圖像拼接(最近覺得打開多幅圖像分別看不如縮小掉放拼接到一幅圖像上對比來的好)

首先把拼接的目標圖像設置興趣區域ROI,比如我有一個total,要把a、b、c分別從左到右拼接到total上,那就分三次對total設置敢興趣區域ROI(注意不是對a、b、c設置),然后再用cvcopy復制過去,如果要加文字可以在復制之前預先把文字加到a、b、c上

然后就是圖像的腐蝕和膨脹,可以自定義一個kernel

代碼:

#include<cv.h>
#include<highgui.h>
int main(void)
{
	cvNamedWindow("Compare");
	IplImage *temp = cvLoadImage("zhiwen.jpg");

	IplImage *src = cvCreateImage(CvSize(temp->width / 2, temp->height / 2), temp->depth, temp->nChannels);
	cvResize(temp, src);

	IplImage *total = cvCreateImage(CvSize(src->width * 3, src->height),src->depth,src->nChannels);

	IplImage *erode = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
	IplImage *dilate= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);

	cvZero(erode);
	cvZero(dilate);
	IplConvKernel *kernel = cvCreateStructuringElementEx(3,3,2,2,CV_SHAPE_RECT);
	cvErode(src, erode,kernel,1);
	cvDilate(src, dilate,kernel,1);

	CvFont font;
	cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1, 1, 2, 2, CV_AA);
	char *a = "Original", *b = "Erode",*c="Dilate";
	//放置字體
	cvPutText(src, a,CvPoint(0, 40),&font,CV_RGB(255,0,0));
	cvPutText(erode, b, CvPoint(0, 40), &font, CV_RGB(255, 0, 0));
	cvPutText(dilate, c, CvPoint(0, 40), &font, CV_RGB(250, 0, 0));

	cvSetImageROI(total, cvRect(0, 0, src->width, src->height));//放入原圖像
	cvCopy(src, total);	
	cvResetImageROI(total);//記得取消ROI

	cvSetImageROI(total, cvRect(src->width, 0, src->width, src->height));//放入腐蝕結果
	cvCopy(erode, total);
	cvResetImageROI(total);

	cvSetImageROI(total, CvRect(src->width * 2, 0, src->width, src->height));//放入膨脹結果
	cvCopy(dilate, total);
	cvResetImageROI(total);

	cvShowImage("Compare", total);//對比圖
	cvWaitKey(0);
	cvSaveImage("result.png", total);
	cvDestroyAllWindows();
	cvReleaseImage(&temp);
	cvReleaseImage(&src);
	cvReleaseImage(&total);
	cvReleaseImage(&dilate);
	cvReleaseImage(&erode);
	cvReleaseStructuringElement(&kernel);
	return 0;
}

  

效果圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM