OpenCV圖像處理形態學操做腐蝕Erode與膨脹Dilate

算法:算法


從圖像處理角度看,二值圖像的腐蝕和膨脹就是將一個小型二值圖(結構元素,通常爲3*3大小)在一個大的二值圖上逐點移動並進行比較,根據比較的結果做出相應處理而已。

膨脹算法:用3X3的結構元素,掃描二值圖像的每個像素,用結構元素與其覆蓋的二值圖像作「與」運算,若是都爲0,結構圖像的該像素爲0,不然爲1.結果:使二值圖像擴大一圈。


腐蝕算法:用3X3的結構元素,掃描二值圖像的每個像素,用結構元素與其覆蓋的二值圖像作「與」運算,若是都爲1,結構圖像的該像素爲1,不然爲0.結果:使二值圖像減少一圈。
ui


注意:spa

OpenCV裏面的腐蝕膨脹都是針對 白色 目標區域的。code

說,膨脹使圖像 變大一圈, 那是指 圖像中的 白色目標區域 擴大了一圈~~~大笑~~~腐蝕,亦然。it

====================================io

代碼:圖像處理

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <cvaux.h> //必須引此頭文件
<p>&nbsp;</p><p>#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
</p>int main( int argc, char** argv )
{ 
 IplImage *img = cvLoadImage("rice.png",0);
 if(img == NULL)
 {
  printf("img load failed!\n");
  return 0;
 }
 IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1);
 IplImage *img_dilate = cvCreateImage(cvGetSize(img), 8, 1);
 cvErode( img,img_erode, NULL,1); //腐蝕
 cvDilate( img,img_dilate, NULL,1); //膨脹
 cvNamedWindow("img_erode");
 cvNamedWindow("img_dilate");
 cvShowImage("img_erode",img_erode);
 cvShowImage("img_dilate",img_dilate);
 cvWaitKey(-1);

 cvReleaseImage(&img_dilate);
 cvReleaseImage(&img_erode);
 cvDestroyAllWindows();

 return 0;
}
相關文章
相關標籤/搜索