博客
关于我
opencv9-膨胀和腐蚀
阅读量:791 次
发布时间:2023-02-23

本文共 1666 字,大约阅读时间需要 5 分钟。

OpenCV 膨胀与腐蚀操作

膨胀和腐蚀是图像处理中的常见操作,常用于边缘检测和形状变化分析。以下是基于OpenCV的C++代码示例,展示了如何实现这些操作。

代码结构说明

#include 
#include
#include
#include
using namespace std;using namespace cv;

导入必要的库

  • opencv2/opencv.hpp:OpenCV库的核心头文件,包含基本图像处理功能。
  • opencv2/highgui/highgui.hpp:高级用户界面功能,用于创建和管理图像窗口。
  • iostream:标准输入输出流,用于打印文本信息。
  • math.h:用于数学函数,包括随机数生成和基本运算。

函数定义

void CallBack_Demo(int, void*);

主函数

int main(){    src = imread("E:\\vs2015\\opencvstudy\\3.jpg", 1);    if (src.empty()){        cout << "could not load the src image!" << endl;        return -1;    }    char *input_title = "input Image";    imshow(input_title, src);    namedWindow(output_title, 1);    createTrackbar("Size:", output_title, &element_size, max_size, CallBack_Demo);    CallBack_Demo(0, 0);    waitKey(0);    return 0;}

回调函数

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_dilate, structureElement, Point(-1, -1), 1);    //erode(src, dst_erode, structureElement, Point(-1, -1), 1);    imshow(output_title, dst_dilate);    //imshow(output_title, dst_erode);    return;}

代码解释

  • 导入库:首先导入了必要的OpenCV库和标准库,确保程序能够正常编译和运行。

  • 读取图像:使用imread函数读取图像文件,图像以灰度格式加载。

  • 创建窗口:使用imshow函数创建输入图像窗口,并设置输出图像窗口。

  • 创建滑动条:使用createTrackbar函数创建滑动条,用户可以通过滑动条调整膨胀/腐蚀的尺寸。

  • 回调函数:当滑动条调整时,回调函数被调用,执行膨胀操作。使用getStructuringElement创建结构元素,dilate函数进行膨胀操作。

  • 膨胀与腐蚀的原理

    • 膨胀:膨胀操作会使图像中的每个像素扩展成更大的区域,用于增强图像的边缘。膨胀的核心原理是求最大值,即白色部分增多。

    • 腐蚀:腐蚀操作会使图像中的每个像素收缩成更小的区域,通常用于去除图像中的小噪声。腐蚀的核心原理是求最小值,即黑色部分增多。

    参数说明

    • element_size:结构元素的大小,决定了膨胀/腐蚀的程度。值越大,效果越明显。
    • max_size:结构元素的最大值,确保结构元素的合理范围。

    通过调整这些参数,可以在图像中实现不同的膨胀和腐蚀效果。

    转载地址:http://gmsfk.baihongyu.com/

    你可能感兴趣的文章
    onCreate中的savedInstanceState作用
    查看>>
    onCreate()方法中的参数Bundle savedInstanceState 的意义用法
    查看>>
    One good websit for c#
    查看>>
    One-Shot学习/一次学习(One-shot learning)
    查看>>
    OneASP 安全公开课,深圳站, Come Here, Feel Safe!
    查看>>
    OneBlog Shiro 反序列化漏洞复现
    查看>>
    oneM2M
    查看>>
    Oneplus5重装攻略
    查看>>
    one_day_one--mkdir
    查看>>
    ONI文件生成与读取
    查看>>
    Vue 项目中实现高效的消息提示与确认对话框功能(模版)
    查看>>
    Online PDF to PNG、JPEG、WEBP、 TXT - toolfk
    查看>>
    onlstm时间复杂度_CRF和LSTM 模型在序列标注上的优劣?
    查看>>
    onlyoffice新版5.1.2版解决中文汉字输入重复等问题
    查看>>
    onnx导出动态输入
    查看>>
    onnx导出动态输入
    查看>>
    onScrollStateChanged无效
    查看>>
    onTouchEvent构造器
    查看>>
    on_member_join 和删除不起作用.如何让它发挥作用?
    查看>>
    oobbs开发手记
    查看>>