aihot  2017-05-07 14:20:19  OpenCV |   查看评论   
>(0,4)=0; diamond.at<uchar>(0,3)=0; diamond.at<uchar>(1,4)=0; for(int i=0;i<5;i++){ x.at<uchar>(i,i)=1; x.at<uchar>(4-i,i)=1; }

第一个为一个十字型的结构元素,第二个为菱形,第三个是矩形,第四个是一个“X”

型。

然后我们按下面的顺序对一幅图像进行操作,并对最后的结果进行阈值化。

Mat result; dilate(image,result,cross); erode(result,result,diamond);  Mat result2; dilate(image,result2,x); erode(result2,result2,square); absdiff(result2,result,result);  threshold(result,result,40,255,THRESH_BINARY);

经过上面步骤,我们得到了一张二值图像,显示了图像的一些角点的位置。

OpenCV成长之路(6):数学形态学基本操作及其应用

 

为了更形象的说明,我们将上面的这些点在原彩色图像上标出来:

// 标记角点 void drawOnImage(const             
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自OpenCV成长之路(6):数学形态学基本操作及其应用

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]