[学习opencv]图像腐蚀、膨胀、开闭操作

图像的基本形态学操作。

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int argc, char* argv[])
{
        Mat src = imread("misaka.jpg");
        Mat dst;
        
        //输入图像
        //输出图像
        //单元大小,这里是5*5的8位单元
        //腐蚀位置,为负值取核中心
        //腐蚀次数两次
        erode(src,dst,Mat(5,5,CV_8U),Point(-1,-1),2);
        imwrite("erode.jpg",dst);

        //输入图像
        //输出图像
        //单元大小,这里是5*5的8位单元
        //膨胀位置,为负值取核中心
        //膨胀次数两次
        dilate(src,dst,Mat(5,5,CV_8U),Point(-1,-1),2);
        imwrite("dilate.jpg",dst);

        //输入图像
        //输出图像
        //定义操作:MORPH_OPEN为开操作,MORPH_CLOSE为闭操作
        //单元大小,这里是3*3的8位单元
        //开闭操作位置
        //开闭操作次数
        morphologyEx(src,dst,MORPH_OPEN,Mat(3,3,CV_8U),Point(-1,-1),1);
        imwrite("open.jpg",dst);

        morphologyEx(src,dst,MORPH_CLOSE,Mat(3,3,CV_8U),Point(-1,-1),1);
        imwrite("close.jpg",dst);

        imshow("dst",dst);
        waitKey();

        return 0;
}

原图:

5*5单元腐蚀两次:

5*5单元膨胀两次:

3*3单元开操作一次:

3*3单元闭操作一次:

 

posted @ 2013-04-20 16:29  Dsp Tian  阅读(26744)  评论(0编辑  收藏  举报