精华内容
下载资源
问答
  • opencv形态学操作概念,膨胀与腐蚀原理和接口使用详解,此工程是动态调整膨胀和腐蚀Demo,欢迎下载学习使用
  • opencv膨胀腐蚀

    2021-04-28 16:27:21
    1.膨胀腐蚀原理 见博主 膨胀就是亮点越亮,暗点越暗,腐蚀相反 2.膨胀 2.1api dilate(const Mat &src, Mat &dst, Mat kernel, Point anchor=Point(-1,-1), int iterations=1) src:輸入圖,可以多通道,...

    1.膨胀腐蚀原理

    见博主

    膨胀就是亮点越亮,暗点越暗,腐蚀相反

    2.膨胀

    2.1api

    dilate(const Mat &src, Mat &dst, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)
    
    src:輸入圖,可以多通道,深度可為CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
    dst:輸出圖,和輸入圖尺寸、型態相同。
    kernel:結構元素,如果kernel=Mat()則為預設的3×3矩形,越大膨脹效果越明顯。
    anchor:原點位置,預設為結構元素的中央。
    iterations:執行次數,預設為1次,執行越多次膨脹效果越明顯。
    

    其中kernel由getStructuringElement()得到

    Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1))
    
    shape:模板形狀,有MORPH_RECT、MORPH_ELLIPSE、MORPH_CROSS(矩阵、椭圆、十字)三種可選。
    ksize:模板尺寸。
    

    2.2代码演示

    Mat srcImg = imread("E:\\OpenCV\\images\\qsmy.png");
    Mat dstImg;
    Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
    dilate(srcImg, dstImg, element, Point(-1, -1), -1);
    imshow("dst", dstImg);
    imshow("img", srcImg);
    waitKey(0);
    

    在这里插入图片描述

    3.腐蚀

    不做赘述,只是效果与膨胀相反,其余相同

    4.基于腐蚀和膨胀的形态学高级操作

    开运算:
    先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域

    闭运算:
    先膨胀,再腐蚀,可清除小黑点

    形态学梯度:
    膨胀图与腐蚀图之差,提取物体边缘

    顶帽:
    原图像-开运算图,突出原图像中比周围亮的区域

    黑帽:
    闭运算图-原图像,突出原图像中比周围暗的区域

    4.1api

    V_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst,
                                    int op, InputArray kernel,
                                    Point anchor=Point(-1,-1), int iterations=1,
                                    int borderType=BORDER_CONSTANT,
                                    const Scalar& borderValue=morphologyDefaultBorderValue() );
    这里的参数和上面的腐蚀膨胀全都一样,除了op
    op是用来选择上面的5个操作的
    MORPH_OPEN – 开运算(Opening operation)
    MORPH_CLOSE – 闭运算(Closing operation)
    MORPH_GRADIENT - 形态学梯度(Morphological gradient)
    MORPH_TOPHAT - 顶帽(Top hat)
    MORPH_BLACKHAT - 黑帽(Black hat)
    

    4.2代码演示

    Mat srcImg = imread("E:\\OpenCV\\images\\car.jpg");
    Mat dstImg;
    Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
    //morphologyEx(srcImg, dstImg, MORPH_OPEN, element);  //开运算
    //morphologyEx(srcImg, dstImg, MORPH_CLOSE, element);  //闭运算
    morphologyEx(srcImg, dstImg, MORPH_GRADIENT, element);  //形态学梯度运算
    //morphologyEx(srcImg, dstImg, MORPH_TOPHAT, element);  //顶帽运算
    //morphologyEx(srcImg, dstImg, MORPH_BLACKHAT, element);  //黒帽运算
    imshow("dst", dstImg);
    imshow("img", srcImg);
    waitKey(0);
    
    展开全文
  • OpenCV膨胀腐蚀

    2019-02-28 16:16:18
    膨胀(dilate),腐蚀(erode)通俗概念: 膨胀和腐蚀处理灰度图都是相对于白色而言。 膨胀:使白色扩张。 腐蚀:使白色减少(黑色扩张)。 形态学滤波: 开闭运算,形态学梯度,顶帽,黑帽。 开运算:先腐蚀后膨胀的...

    膨胀(dilate),腐蚀(erode)通俗概念:
    膨胀和腐蚀处理灰度图都是相对于白色而言。
    膨胀:使白色扩张。
    腐蚀:使白色减少(黑色扩张)。

    形态学滤波:
    开闭运算,形态学梯度,顶帽,黑帽。
    开运算:先腐蚀后膨胀的效果
    伪代码可理解为:
    dst = dilate(erode(src));

    用来清除毛边,孤立的点,总位置和形状不变。

    闭运算:先膨胀后腐蚀的效果
    伪代码:
    dst=erode(dilate(src));

    能够填平小孔,填平小裂缝,总位置和形状不变

    形态学梯度:膨胀图与腐蚀图之差
    伪代码:
    dst=dilate(src) - erode(src);

    用来保留物体的边缘轮廓

    顶帽:原图与开运算之差
    伪代码:
    dst=src - open(src)=src - dilate(erode(src));

    黑帽:闭运算与原图之差
    伪代码:
    dst=close(src) - src=erode(dilate(src)) - src;

    展开全文
  • OpenCV膨胀与腐蚀

    2018-09-04 22:05:00
    膨胀与腐蚀本篇博客主要介绍使用OpenCV中的函数接口实现对一个图片的腐蚀或者膨胀,听起来有点像是对图像进行放大和缩小的意思,如果你也是这样认为,那我只能说你跟我一样肤浅!!在OpenCV中几乎所有的操作都是针对...

    膨胀与腐蚀

    本篇博客主要介绍使用OpenCV中的函数接口实现对一个图片的腐蚀或者膨胀,听起来有点像是对图像进行放大和缩小的意思,如果你也是这样认为,那我只能说你跟我一样肤浅!!
    在OpenCV中几乎所有的操作都是针对图像的像素点进行的,包括灰化,二值化,模糊化等,膨胀和腐蚀也是一样,都是针对传入图像的像素点进行操作的!!!

    膨胀:
    此操作将图像(A)与任意形状的内核 (B),通常为正方形或圆形,进行卷积。内核 B 有一个可定义的 锚点, 通常定义为内核中心点。进行膨胀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最大相素值提取,并代替锚点位置的相素。显然,这一最大化操作将会导致图像中的亮区开始”扩展” (因此有了术语膨胀 dilation )。
    这种操作会造成图像中像素值高的区域变大,而像素值小的区域变小,等一下看你一下效果你就知道了!!!

    腐蚀:
    跟膨胀操作造作的效果刚好相反。腐蚀在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的相素最小值。进行腐蚀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最小相素值提取,并代替锚点位置的相素。以与膨胀相同的图像作为样本,我们使用腐蚀操作。从下面的结果图我们看到亮区(背景)变细,而黑色区域(字母)则变大了。

    https://blog.csdn.net/u011043551/article/details/72997020

    转载于:https://www.cnblogs.com/yifdu25/p/9588811.html

    展开全文
  • OpenCV 膨胀and腐蚀

    2018-04-18 17:09:57
    #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include &...opencv2/opencv.hpp&...// 膨胀:计算掩膜...


    #include <iostream>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    
    // 膨胀:计算掩膜覆盖下图像的最大像素值来替换锚点的像素
    // 简单说 用高像素点来代替低像素点,图片越来越白
    
    
    // 腐蚀:计算掩膜覆盖下图像的最小像素值来替换锚点的像素
    // 图片越来越黑
    
    Mat src, dst;
    int element_size = 3;
    int max_size = 21;
    
    void CallBack_dilate(int, void *) {
        int s = element_size * 2 + 1;
        Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
        dilate(src, dst, structureElement, Point(-1, -1), 1);
        imshow("output image", dst);
        return ;
    }
    
    void CallBack_erode(int, void*) {
        int s = element_size * 2 + 1;
        Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
        erode(src, dst, structureElement, Point(-1, -1), 1);
        imshow("output image", dst);
        return ;
    }
    
    
    int main() {
        Mat src1, src2, gray_src, dst;
        src = imread("/Users/apple/Desktop/birth.jpg", IMREAD_COLOR);
        //src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
        if (src.empty()) { // if (!src.data())
            cout << "could not load image..." << endl;
            return -1;
        }
        imshow("input", src);
        
        namedWindow("output image", CV_WINDOW_AUTOSIZE);
        createTrackbar("dilate size: ", "output image", &element_size, max_size, CallBack_dilate);
        createTrackbar("erode size:", "output image", &element_size, max_size, CallBack_erode);
        CallBack_dilate(0, 0);
        
        
        waitKey(0);
        
        return 0;
    }
    
    
    


    展开全文
  • Opencv 膨胀和腐蚀

    2019-03-25 20:13:56
    opencv2\opencv.hpp> #include<iostream> using namespace std; using namespace cv; int element_size = 2; int max_size = 21; Mat src; void CallBack_Demo(int, void*) { int s = ele...
  • opencv 膨胀与腐蚀

    2020-04-19 00:22:46
    膨胀与腐蚀 膨胀:假设有图像A和结构元素B,结构元素B在图像A上移动,假设结构元素B的中心点为锚点,在结构元素B下的图像A中最大的像素值替换锚点,其中B作为结构体,可以是任意形状,矩形,圆形,椭圆等等。 腐蚀:...
  • opencv 膨胀和腐蚀

    2017-08-29 17:00:20
    膨胀腐蚀是对高亮部分的操作(及大像素值)膨胀腐蚀可以消除噪声,连接相邻区域,分割独立区域,寻求区域最大最小值 膨胀的原理是通过一个核去边缘覆盖,然后取这个核的最大值,把核的其他区域用最大值替换,...
  • opencv膨胀与腐蚀

    2017-03-07 15:48:23
     int main() ... namedWindow("膨胀前");  namedWindow("膨胀后");  imshow("膨胀前", image);  //获取自定义核   Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
  • opencv 膨胀与腐蚀操作

    2019-12-16 12:02:25
    void CallBack_Demo(int,void*) { int s=element_size*2+1; Mat structureElement = getStructuringElement(MORPH_RECT,Size(s,s),Point(-1,-1));... //膨胀 dilate(src,dst,structureElement,Point(-...
  • python+opencv 膨胀与腐蚀

    千次阅读 2020-02-03 18:57:30
    膨胀与腐蚀都支持任意形状的结构元素。 膨胀(Dilate):用掩膜覆盖位置下的最大像素替代中心位置的像素。 膨胀的作用: 1、对象大小增加一个像素(3*3) 2、平滑对象边缘 3、减少或者填充对象之间的距离 腐蚀...
  • OPenCV版本:4.4 IDE:VS2007 功能描述 简述:使用一个指定的核元素去膨胀一个图像,图像膨胀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所覆盖元素的最大值替换B的...
  • 3.qt+opencv 膨胀和腐蚀

    2020-09-23 19:56:41
    网上的原理很多,我这直接上代码 #include "widget.h" #include "ui_widget.h" #include <QFileDialog> #include <QDebug> #include <...opencv2/core/core.hpp>...opencv2/imgproc/imgp
  • Python opencv膨胀函数cv2.dilate()

    千次阅读 2020-08-02 16:39:16
    opencv可以利用cv2.dilate()函数对图片进行膨胀处处理。
  • 腐蚀和膨胀是最基本的形态学运算。 腐蚀和膨胀是针对白色部分(高亮部分)而言的。 膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;...opencv2\opencv.hpp&gt; #in...
  • opencv膨胀cv2.dilate

    千次阅读 2019-04-08 21:32:17
    import cv2 import numpy as np img = cv2.imread('1.jpg',0) #用numpy生产卷积核 kernel = np.ones((5,5),np.uint8) dilate = cv2.dilate(img,kernel,iterations = 1) cv2.imshow('dilate',dilate) ...
  • 形态学操作(morphology operators)-膨胀 图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学 形态学有四个基本操作:腐蚀、膨胀、开、闭 膨胀与腐蚀是图像处理中最常用...
  • #include"opencv2/opencv.hpp" #include<cmath> //膨胀腐蚀 消除小的噪声块 与背景和前景色有关 //膨胀:用最大像素的替换中心像素 using namespace std; using namespace cv; void CallBack_Dome(int, void*...
  • 膨胀就是相邻三个像素点|| 腐蚀就是相邻三个像素点&amp;&amp; 膨胀作用:将多余相素放大。去除 (增大白色面积) 腐蚀作用:将多余相素去掉再缩小。恢复原图. (增大相邻黑色面积) import cv2 as cv...
  • Opencv膨胀-dilate函数

    千次阅读 2015-09-16 23:09:55
    #include<opencv2/opencv.hpp> using namespace std; using namespace cv; Mat srcImage, dstImage; int g_nDilateValue = 0; //有滚动条事件时,可以进入回调函数 void on_Trackbar(int, void *) { Mat element...
  • "膨胀" , CV_WINDOW_AUTOSIZE); cvNamedWindow( "腐蚀" , CV_WINDOW_AUTOSIZE); cvShowImage( "原图" , img); cvShowImage( "膨胀" , img1); cvShowImage( "腐蚀" , img2); cvWaitKey( 0 ); cvReleaseImage...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,401
精华内容 960
关键字:

opencv膨胀