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);
    }
原图

Android OpenCv4 图像形态学之腐蚀和膨胀_第1张图片

腐蚀以后

Android OpenCv4 图像形态学之腐蚀和膨胀_第2张图片

图像膨胀

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

/**
		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);
    }
膨胀以后

Android OpenCv4 图像形态学之腐蚀和膨胀_第3张图片

你可能感兴趣的:(OpenCv)