• Qt-OpenCV学习笔记--高级形态转换--morphologyEx()


    概述

    OpenCV提供了一个综合的形态转换工具 morphologyEx() ,集成了腐蚀运算、膨胀运算、开运算、闭运算、梯度运算、顶帽运算、黑帽运算。

    函数

    1. void cv::morphologyEx
    2. (
    3. InputArray src,
    4. OutputArray dst,
    5. int op,
    6. InputArray kernel,
    7. Point anchor = Point(-1,-1),
    8. int iterations = 1,
    9. int borderType = BORDER_CONSTANT,
    10. const Scalar & borderValue = morphologyDefaultBorderValue()
    11. )
    src源图像
    dst输出图像
    op

    形态运算的类型

     ● MORPH_ERODE        腐蚀

     ● MORPH_DILATE        膨胀

     ● MORPH_OPEN          开运算

     ● MORPH_CLOSE        闭运算

     ● MORPH_GRADIENT        梯度运算

     ● MORPH_TOPHAT            顶帽运算

     ● MORPH_BLACKHAT        黑帽匀速

     ● MORPH_HITMISS            命中/未命中

    kernel结构元素(可以使用 getStructuringElement 创建)
    anchor结构元素的锚点位置(默认值(-1,-1)表示锚位于元素中心)
    iterations形态运算的迭代次数
    borderType图像边框扩展模式(可查阅BorderTypes,但不支持BORDER_WRAP)
    borderValue恒定边界的边界值

    测试代码

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include <opencv2/core/core.hpp>
    4. #include <opencv2/highgui/highgui.hpp>
    5. #include <opencv2/imgproc/imgproc.hpp>
    6. using namespace cv;
    7. Widget::Widget(QWidget *parent)
    8. : QWidget(parent)
    9. , ui(new Ui::Widget)
    10. {
    11. ui->setupUi(this);
    12. //载入图像
    13. Mat src = imread("c:/opencv/star.jpg");
    14. //显示
    15. imshow("src",src);
    16. //自定义核
    17. Mat element = getStructuringElement(MORPH_ELLIPSE,Size(5,5));
    18. //腐蚀运算
    19. Mat dst_erode;
    20. morphologyEx(src,dst_erode,MORPH_ERODE,element);
    21. imshow("dst_erode",dst_erode);
    22. //膨胀运算
    23. Mat dst_dilate;
    24. morphologyEx(src,dst_dilate,MORPH_DILATE,element);
    25. imshow("dst_dilate",dst_dilate);
    26. //开运算
    27. Mat dst_open;
    28. morphologyEx(src,dst_open,MORPH_OPEN,element);
    29. imshow("dst_open",dst_open);
    30. //闭运算
    31. Mat dst_close;
    32. morphologyEx(src,dst_close,MORPH_CLOSE,element);
    33. imshow("dst_close",dst_close);
    34. //梯度运算
    35. Mat dst_gradient;
    36. morphologyEx(src,dst_gradient,MORPH_GRADIENT,element);
    37. imshow("dst_gradient",dst_gradient);
    38. //顶帽运算
    39. Mat dst_top;
    40. morphologyEx(src,dst_top,MORPH_TOPHAT,element);
    41. imshow("dst_top",dst_top);
    42. //黑帽运算
    43. Mat dst_black;
    44. morphologyEx(src,dst_black,MORPH_BLACKHAT,element);
    45. imshow("dst_black",dst_black);
    46. }
    47. Widget::~Widget()
    48. {
    49. delete ui;
    50. }

    测试结果

    参考

    opencv中morphologyEx()函数

    形态学应用——图像开运算与闭运算

  • 相关阅读:
    一起Talk Android吧(第三百七十九回:让ViewPager一屏幕显示三页)
    在 docker 容器中使用 docker
    MySQL查看主从复制信息详解
    规则引擎Drools使用,0基础入门规则引擎Drools(一)基础入门
    糟糕!国外客户找到了我的工厂
    I.MX6ull UART
    Jmeter 性能测试工具使用
    免费分享一套SpringBoot+Vue实验室(预约)管理系统,帅呆了~~
    二叉树的建立和前序,中序,后序,遍历(给定节点以及其之间的关系)
    [数据结构]——单链表超详细总结
  • 原文地址:https://blog.csdn.net/ssismm/article/details/127801457