opencv——對指定區域進行腐蝕

#include <opencv2\opencv.hpp>
#include <stdio.h>

int main( int argc, int argv[])
{
	//讀圖
IplImage* src = cvLoadImage("1.jpg",1);


//構造腐蝕模板的數據結構
IplConvKernel* element =0;
int cols=4,rows=4,anchor_x=2,anchor_y=2;
int values[16]={0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0};
//創建腐蝕模板
element = cvCreateStructuringElementEx(cols,rows,anchor_x,anchor_y,CV_SHAPE_CUSTOM,values);
//對局部區域腐蝕
CvRect rect;
rect.x = 100;
rect.y = 80;
rect.height=300;
rect.width=200;
cvSetImageROI(src,rect);
//腐蝕6次
cvErode(src,src,element,10);
cvResetImageROI(src);
//創建窗口並顯示圖像

cvNamedWindow("src",1);
cvShowImage("src",src);

//等待
cvWaitKey(0);
//釋放圖像內存,消除窗口
cvReleaseImage(&src);

cvDestroyWindow("src");

return 0;
}

顯示結果:對狗狗的臉進行了腐蝕(PS:像不像油畫嘞~)

副:對整體圖像進行腐蝕:

#include <opencv2\opencv.hpp>
#include <stdio.h>

int main( int argc, int argv[])
{
	//讀圖
IplImage* src = cvLoadImage("1.jpg",1);
//創建目標圖像
IplImage* dst = cvCreateImage(cvGetSize(src),8,3);
//構造腐蝕模板的數據結構
IplConvKernel* element =0;
int cols=4,rows=4,anchor_x=2,anchor_y=2;
int values[16]={0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0};
//創建腐蝕模板
element = cvCreateStructuringElementEx(cols,rows,anchor_x,anchor_y,CV_SHAPE_CUSTOM,values);

//腐蝕10次
cvErode(src,dst,element,10);
cvResetImageROI(src);
//創建窗口並顯示圖像
cvNamedWindow("dst",1);
cvNamedWindow("src",1);
cvShowImage("src",src);
cvShowImage("dst",dst);
//等待
cvWaitKey(0);
//釋放圖像內存,消除窗口
cvReleaseImage(&src);
//cvReleaseImage(&dst);
cvDestroyWindow("src");
cvDestroyWindow("dst");
return 0;
}
運行結果:

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