zoukankan      html  css  js  c++  java
  • 形态学操作

    morphologyEx(src,dst,OPT,kernel)

    OPT对应操作,分为以下几类

    CV_MOP_OPEN开操作

    CV_MOP_CLOSE闭操作

    CV_MOP_GRADIENT形态学梯度

    CV_MOP_TOPHAT顶帽操作

    CV_MOP_BLACKHAT黑帽操作

    1.开操作

    先腐蚀再膨胀

    2.闭操作

    先膨胀再腐蚀

    3.形态学梯度

    膨胀-腐蚀(也叫做基本梯度),形态学梯度还包括内部梯度和方向梯度

    4.顶帽操作

    原图像与开操作的差值

    5.黑帽操作

    闭操作与原图像的差值

    #include<iostream>
    #include<opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char **argv)
    {
        Mat src,dst_open,dst_close,dst_gra,dst_top,dst_black;
        src = imread("b.jpg");
        if (src.empty())
        {
            cout << "load image failed" << endl;
            return -1;
        }
    
        imshow("input img", src);
        Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1, -1));
        morphologyEx(src, dst_open, CV_MOP_OPEN, kernel);
        imshow("open", dst_open);
        morphologyEx(src, dst_close, CV_MOP_CLOSE, kernel);
        imshow("close", dst_close);
        morphologyEx(src, dst_gra, CV_MOP_GRADIENT, kernel);
        imshow("gradent", dst_gra);
        morphologyEx(src, dst_top, CV_MOP_TOPHAT, kernel);
        imshow("tophat", dst_top);
        morphologyEx(src, dst_black, CV_MOP_BLACKHAT, kernel);
        imshow("blackhat", dst_black);
        waitKey(0);
        return 0;
    
    }

     

     

    6,水平线垂直线的提取

    分为以下几个步骤:

    输入彩色图像

    转为灰度图像

    转为二值图像

    adaptiveThreshould(src,dst,maxValue,adaptiveMethod,threshould,blocksize,c)

    参数分别对应输入图像,输出图像,自适应方法(ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C),阈值类型,块大小,常数c

    定义结构元素

    开操作提取水平线和垂直线(~表示取反操作)

    #include<iostream>
    #include<opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char **argv)
    {
        Mat src,dst;
        src = imread("d.jpg");
        if (src.empty())
        {
            cout << "load image failed" << endl;
            return -1;
        }
    
        imshow("input img", src);
        Mat gray_src;
        cvtColor(src, gray_src, CV_BGR2GRAY);
        imshow("gray", gray_src);
    
        Mat binImg;
        adaptiveThreshold(~gray_src, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
        imshow("binary img", binImg);
        //水平结构元素
        Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 100, 1), Point(-1, -1));
        //垂直结构元素
        Mat wline = getStructuringElement(MORPH_RECT, Size(1, src.rows / 100), Point(-1, -1));
    
    /*
        Mat temp;
        erode(binImg, temp, wline);
        dilate(temp, dst, wline);
    */
        morphologyEx(binImg, dst, CV_MOP_OPEN, hline);
    
        imshow("final result", dst);
        waitKey(0);
        return 0;
    
    }

     

     

    利用形态学降噪

    #include<iostream>
    #include<opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char **argv)
    {
        Mat src,dst;
        src = imread("d.jpg");
        if (src.empty())
        {
            cout << "load image failed" << endl;
            return -1;
        }
    
        imshow("input img", src);
        Mat gray_src;
        cvtColor(src, gray_src, CV_BGR2GRAY);
        imshow("gray", gray_src);
    
        Mat binImg;
        adaptiveThreshold(~gray_src, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
        imshow("binary img", binImg);
        //水平结构元素
        Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 100, 1), Point(-1, -1));
        //垂直结构元素
        Mat wline = getStructuringElement(MORPH_RECT, Size(1, src.rows / 100), Point(-1, -1));
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
    /*
        Mat temp;
        erode(binImg, temp, wline);
        dilate(temp, dst, wline);
    */
        morphologyEx(binImg, dst, CV_MOP_OPEN, kernel);
    
        imshow("final result", dst);
        waitKey(0);
        return 0;
    
    }

     

  • 相关阅读:
    推荐6款优秀的海外免费杀毒软件 附下载链接
    30个高质量的Psd设计文件分享
    45个设计师们不常见的html5和css3漂亮模板
    40个极简WordPress主题
    makfile中 override 与 +=联合作用的验证
    对 makefile 中 flavor 函数的学习体会
    GNU make manual 翻译( 一百六十七)
    对 makefile 中 override 优先级的学习体会
    GNU make manual 翻译( 一百六十五)
    GNU make manual 翻译( 一百六十六)
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12061094.html
Copyright © 2011-2022 走看看