0
点赞
收藏
分享

微信扫一扫

opencv图像的膨胀与腐蚀

芝婵 2022-06-01 阅读 71

main.cpp

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

using namespace cv;
using namespace std;
int dilate_size = 1;
char dilate_title[] = "dilate_dst";
const char *dilate_bar = "dilate";
int erode_size = 1;
char erode_title[] = "erode_dst";
const char *erode_bar = "dilate";
Mat src, dilate_dst, erode_dst, dilate_element, erode_element;

void dilate_callback(int position, void *userdata);

void erode_callback(int position, void *userdata);

int main(int argc, char **argv) {
    //    加载图片
    src = imread("../../picture/bg1.webp", 1);
    if (!src.data) {
        printf("No image data \n");
        return -1;
    }
    char src_title[] = "src";
    namedWindow(src_title, WINDOW_AUTOSIZE);
    imshow(src_title, src);
    // 膨胀
    namedWindow(dilate_title, WINDOW_AUTOSIZE);
    createTrackbar(dilate_bar, dilate_title, &dilate_size, 50, dilate_callback);

    // 腐蚀
    namedWindow(erode_title, WINDOW_AUTOSIZE);
    createTrackbar(erode_bar, erode_title, &erode_size, 50, erode_callback);

    //    等待按键
    waitKey(0);
    return 0;
}

void dilate_callback(int position, void *userdata) {
    if (position <= 0) {
        position = 1;
    }
    dilate_size = position;
    dilate_element = getStructuringElement(MORPH_RECT, Size(dilate_size, dilate_size));
    dilate(src, dilate_dst, dilate_element);
    imshow(dilate_title, dilate_dst);
}

void erode_callback(int position, void *userdata) {
    if (position <= 0) {
        position = 1;
    }
    erode_size = position;
    erode_element = getStructuringElement(MORPH_RECT, Size(erode_size, erode_size));
    erode(src, erode_dst, erode_element);
    imshow(erode_title, erode_dst);
}

opencv图像的膨胀与腐蚀_加载图片

 


举报

相关推荐

0 条评论