我是靠谱客的博主 欣喜大叔,最近开发中收集的这篇文章主要介绍Opencv(C++)笔记--形态学操作之开、闭操作、基本梯度计算、顶帽和黑帽操作1--开操作2--闭操作3--基本梯度计算4--顶帽操作5--黑帽操作6--代码实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

1--开操作

2--闭操作

3--基本梯度计算

4--顶帽操作

5--黑帽操作

6--代码实例


1--开操作

① 原理:先进行腐蚀操作,再进行膨胀操作;

② 作用:消除值高于邻近点的孤立点,达到去除图像中噪声的作用(假定对象是前景色、背景是黑色);消除较小的连通域,保留较大的连通域;断开较窄的狭颈,可以在两个物体纤细的连接处将它们分离;不明显改变较大连通域的面积的情况下平滑连通域的连界、轮廓;

③ OpenCV API:

cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(30, 30), cv::Point(-1, -1));
    
cv::morphologyEx(src, dst, cv::MORPH_OPEN, kernel); 

2--闭操作

① 原理:先进行膨胀操作,再进行腐蚀操作;

② 作用:消除值低于邻近点的孤立点,达到去除图像中噪声的作用(假定对象是前景色、背景是黑色);连接两个邻近的连通域;弥合较窄的间断和细长的沟壑;去除连通域内的小型空洞;能够平滑物体的轮廓;

③ OpenCV API:

cv::morphologyEx(src, dst, cv::MORPH_CLOSE, kernel); 

3--基本梯度计算

① 原理:膨胀后的图像减去腐蚀后的图像;

② Opencv API:

cv::morphologyEx(src, dst, cv::MORPH_GRADIENT, kernel);

4--顶帽操作

① 原理:计算原图像和开运算图像的差值图像;

② Opencv API:

cv::morphologyEx(src, dst, cv::MORPH_TOPHAT, kernel);

5--黑帽操作

① 原理:计算闭运算操作的图像与原图像的差距;

② Opencv API:

cv::morphologyEx(src, dst, cv::MORPH_BLACKHAT, kernel);

6--代码实例

#include <opencv2/opencv.hpp>
# include<cstdio>

int main(int argc, char** argv){
    cv::Mat src;
    src = cv::imread("C:/Users/Liujinfu/Desktop/opencv_bilibili/test1.jpg");
    if (src.empty()){
        printf("could not load image..n");
        return -1;
    }
    cv::imshow("input", src);

    cv::Mat dst;
    cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(-1, -1));
    // 开操作,先腐蚀后膨胀
    //cv::morphologyEx(src, dst, cv::MORPH_OPEN, kernel); 

    // 闭操作,先膨胀后腐蚀
    //cv::morphologyEx(src, dst, cv::MORPH_CLOSE, kernel); 

    // 形态学梯度:膨胀减去腐蚀(基本梯度)
    cv::morphologyEx(src, dst, cv::MORPH_GRADIENT, kernel);
    
    // 顶帽:计算原图像与开图像的差值
    //cv::morphologyEx(src, dst, cv::MORPH_TOPHAT, kernel);

    // 黑帽:计算闭图像与原图像的差值
    //cv::morphologyEx(src, dst, cv::MORPH_BLACKHAT, kernel);

    cv::imshow("output", dst);
    cv::waitKey(0);
    return 0;
}

最后

以上就是欣喜大叔为你收集整理的Opencv(C++)笔记--形态学操作之开、闭操作、基本梯度计算、顶帽和黑帽操作1--开操作2--闭操作3--基本梯度计算4--顶帽操作5--黑帽操作6--代码实例的全部内容,希望文章能够帮你解决Opencv(C++)笔记--形态学操作之开、闭操作、基本梯度计算、顶帽和黑帽操作1--开操作2--闭操作3--基本梯度计算4--顶帽操作5--黑帽操作6--代码实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部