zoukankan      html  css  js  c++  java
  • opencv形态学操作,膨胀与腐蚀

    先膨胀再腐蚀消除裂痕:

     代码:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    using namespace cv;
    using namespace std;
    
    //dst是膨胀后的图像,dst2是腐蚀后的图像
    Mat src, dst,dst2;
    //膨胀的卷积核
    int element_size = 3;
    //腐蚀的卷积核
    int element_size2 = 3;
    int max_size = 21;
    
    char* OUTPUT_WIN = "output image";
    
    //膨胀操作
    void CallBackDilate(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));
        imshow(OUTPUT_WIN, dst);
    }
    
    //腐蚀操作
    void CallBackErode(int, void*)
    {
        int s = element_size * 2 + 1;
        Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
        erode(dst, dst2, structureElement, Point(-1, -1));
        imshow(OUTPUT_WIN, dst2);
    }
    
    
    int main()
    {
        //原图
        src = imread(".//pic//1.png",IMREAD_UNCHANGED);
        
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
    
        namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE);
        createTrackbar("膨胀卷积核大小:", OUTPUT_WIN, &element_size, max_size, CallBackDilate);
        createTrackbar("腐蚀卷积核大小:", OUTPUT_WIN, &element_size2, max_size, CallBackErode);
        CallBackDilate(0, 0);
    
        waitKey(0);
        return 0;
    }
  • 相关阅读:
    深入浅出Vue.js(四) 整体流程
    深入浅出Vue.js(三) 模板编译
    实现strStr()--indexOf()方法
    Z字形变换
    最长回文子串
    删除数组中不符合条件的值
    整数反转
    寻找两个正序数组的中位数
    gorm 关系一对一,一对多,多对多查询
    gorm 如何对字段进行comment注释?
  • 原文地址:https://www.cnblogs.com/xiaochi/p/12000825.html
Copyright © 2011-2022 走看看