​Android OpenCv4 图像形态学之腐蚀和膨胀


图像腐蚀

图像腐蚀的作用是将目标图像收缩,运算效果取决于结构元素大小内容以及逻辑运算性质。腐蚀处理可以表示成用结构元素对图像进行探测,找出图像中可以放下该结构元素的区域。腐蚀是一种消除边界点,使边界点内缩的过程。可以用来消除小且无意义的目标物。

/**
		src  输入的待腐蚀图像,图像的通道数可以是任意的,但是图像的数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
		dst  腐蚀后的输出图像,与输入图像src具有相同的尺寸和数据类型
		kernel  用于腐蚀操作的结构元素,可以自己定义,也可以用getStructuringElement()函数生成
		anchor  中心点在结构元素中的位置,默认参数为结构元素的几何中心点
		iterations  腐蚀的次数,默认值为1
		borderType  像素外推法选择标志
		borderValue  使用边界不变外推法时的边界值
**/
 public static void erode(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)

使用
    /**
     * 图像腐蚀
     * @param bitmap
     * @param iv
     */
    public static void setErode(Bitmap bitmap, ImageView iv){
        Mat mSource = new Mat();

        Utils.bitmapToMat(bitmap, mSource);
        Mat grayMat = new Mat();
        Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图
        //图像腐蚀
        Mat kernel = Imgproc.getStructuringElement(CV_SHAPE_RECT,new Size(3, 3));
        Mat result =new Mat();
        Imgproc.erode(mSource, result, kernel, new Point(-1,-1),1);
        showImg(result,iv);
    }
原图

在这里插入图片描述

腐蚀以后

在这里插入图片描述

图像膨胀

图像膨胀的作用是将目标图像扩大,运算效果取决于结构元素大小内容以及逻辑运算性质。图像膨胀操作可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。

/**
		src  输入的待膨胀图像,图像的通道数可以是任意的,但是图像的数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
		dst  膨胀后的输出图像,与输入图像src具有相同的尺寸和数据类型
		kernel  用于膨胀操作的结构元素,可以自己定义,也可以用getStructuringElement()函数生成
		anchor  中心点在结构元素中的位置,默认参数为结构元素的几何中心点
		iterations  膨胀的次数,默认值为1
		borderType  像素外推法选择标志
		borderValue  使用边界不变外推法时的边界值
**/
 public static void dilate(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)
使用
    /**
     * 图像膨胀
     * @param bitmap
     * @param iv
     */
    public static void setErode(Bitmap bitmap, ImageView iv){
        Mat mSource = new Mat();

        Utils.bitmapToMat(bitmap, mSource);
        Mat grayMat = new Mat();
        Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图
        //图像膨胀
        Mat kernel = Imgproc.getStructuringElement(CV_SHAPE_RECT,new Size(3, 3));
        Mat result =new Mat();
        Imgproc.dilate(mSource, result, kernel, new Point(-1,-1),1);
        showImg(result,iv);
    }
膨胀以后

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值