锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
3銆佸拰宸茬粡鏈夌殑MFC錛學(xué)IN32浠g爜铻嶅悎鐨勬椂闂存瘮杈冨皯銆?br />
]]>
鐧懼害鏂囧簱閲岀殑鏂囨。
嫻嬭瘯鍥懼儚錛?br /> 
緇撴灉鍥懼儚
]]>
鏍規(guī)嵁鍥懼儚褰㈡佸鐨勭悊璁猴紝鑶ㄨ儉婊¤凍緇撳悎寰嬶紝鍗?img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/mcs51a/dilation_satisfies.png" />錛?font color="#0066ff">B鍜孋涓虹粨鏋勫厓绱?/font>銆傚亣璁句竴涓粨鏋勫厓绱燬鍙互琛ㄧず涓轟袱涓粨鏋勫厓绱燘鍜孋鐨勮啫鑳錛屽嵆S=B⊕C錛屽垯A⊕S=A⊕(B⊕C)=(A⊕B)⊕C錛屾崲璦涔嬶紝鐢⊿鑶ㄨ儉A絳夊悓浜庣敤B鍏堣啫鑳A錛屽啀鐢–鑶ㄨ儉鍓嶉潰鐨勭粨鏋溿傛垜浠ОS鑳藉鍒嗚В鎴怋鍜孋涓や釜緇撴瀯鍏冪礌銆傜粨鍚堝緥寰堥噸瑕侊紝鍥犱負(fù)璁$畻鑶ㄨ儉鎵闇瑕佺殑鏃墮棿姝f瘮浜庣粨鏋勫厓绱犱腑鐨勯潪闆跺儚绱犵殑涓暟銆傞氳繃涓婅堪鎺ㄥ錛屽垎瑙g粨鏋勫厓绱狅紝鐒跺悗鍐嶅垎鍒敤瀛愮粨鏋勫厓绱犺繘琛岃啫鑳鎿嶄綔寰寰浼?xì)瀹炵幇寰堝瑙傜殑閫熷害鐨勫闀褲?br />
鍚屾牱錛岃厫铓涔熷彲浠ュ仛緇撴瀯鍒嗚В錛岃厫铓婊¤凍鍏紡
錛孊鍜孋涓虹粨鏋勫厓绱狅紝鍚屾牱濡傛灉涓涓粨鏋勫厓绱燬鍙互琛ㄧず涓轟袱涓粨鏋勫厓绱燘鍜孋鐨勮啫鑳錛屽嵆S=B⊕C錛岄偅涔?font color="#0066ff">鐢⊿鑵愯殌A絳夊悓浜庣敤B鍏堣厫铓A錛屽啀鐢–鑵愯殌鍓嶉潰鐨勭粨鏋?/font>銆傚叕寮忔帹瀵肩渷鐣ャ?br />
鍥懼儚褰㈡佸鑶ㄨ儉鍜岃厫铓浠嬬粛錛屽彲瑙?br /> http://en.wikipedia.org/wiki/Erosion_(morphology)
http://en.wikipedia.org/wiki/Dilation_(morphology)
鍋氱粨鏋勫垎瑙e悗鐨勮繍綆楅噺涓篧*H*錛坘w+kh錛?/span>
浠g爜濡備笅
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
if(argc<2) {
printf("has no param\n");
return 0;
}
IplConvKernel *element1 = cvCreateStructuringElementEx( 1, 25, 0, 0, CV_SHAPE_RECT, 0);
IplConvKernel *element2 = cvCreateStructuringElementEx( 16, 1, 0, 0, CV_SHAPE_RECT, 0);
IplConvKernel *element3 = cvCreateStructuringElementEx( 16, 25, 0, 0, CV_SHAPE_RECT, 0);
IplImage* src=cvLoadImage(argv[1],1);

if( src!= NULL)
{
IplImage* img = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
cvCvtColor(src,img,CV_BGR2GRAY);
cvReleaseImage(&src);
IplImage* tmp = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvDilate( img, tmp, element1, 1);
IplImage* dst1 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvDilate( tmp, dst1, element2, 1);
IplImage* dst2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvDilate( img, dst2, element3, 1);
IplImage* diff = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvSub(dst2,dst1,tmp,NULL);
cvEqualizeHist( tmp, diff);
cvReleaseImage(&tmp);
int noZeroCount=cvCountNonZero(diff);
printf("no zerocount %d\n",noZeroCount);
cvNamedWindow("img",CV_WINDOW_AUTOSIZE);
cvShowImage("img",img);
cvNamedWindow("dst1",CV_WINDOW_AUTOSIZE);
cvShowImage("dst1",dst1);
cvNamedWindow("dst2",CV_WINDOW_AUTOSIZE);
cvShowImage("dst2",dst2);
cvNamedWindow("diff",CV_WINDOW_AUTOSIZE);
cvShowImage("diff",diff);
cvWaitKey();
cvDestroyAllWindows();
cvReleaseImage(&img);
cvReleaseImage(&dst1);
cvReleaseImage(&dst2);
cvReleaseImage(&diff);
cvReleaseStructuringElement(&element1);
cvReleaseStructuringElement(&element2);
cvReleaseStructuringElement(&element3);
}
else
{
printf("error,not load\n");
}
return 0;
};