OpenCVSharp - 用MorphologyEx函数做形态学变换

OpenCVSharp 跑一遍OpenCV官方教程(全为手敲代码,如有雷同都是我的错)

用MorphologyEx函数做形态学变换

OpenCV教程链接:https://docs.opencv.org/4.5.0/d3/dbe/tutorial_opening_closing_hats.html

一系列变换包括:

  • 开运算
  • 闭运算
  • 形态学梯度
  • 顶帽
  • 黑帽
  • 核心函数:
  • MorphologyEx()
  • GetStructuringElement()

效果图

using OpenCvSharp;
using System;


namespace ConsoleApp1
{
    class tutorial5 : ITutorial
    {
        Mat src, dst;
        int morph_elem = 0;
        int morph_size = 0;
        int morph_operator = 0;
        int max_operator = 4;
        int max_elem = 2;
        int max_kernel_size = 21;
        string window_name = "Morphology Transformations Demo";


        public void Run()
        {

            src = Cv2.ImRead("baboon.jpg", ImreadModes.Color);
            if (src.Empty())
            {
                Console.WriteLine("Could not open or find the image!\n");
                return;
            }
            dst = new Mat();

            Cv2.NamedWindow(window_name, WindowFlags.AutoSize); // Create window

            Cv2.CreateTrackbar("Operator", window_name, ref morph_operator, max_operator, new TrackbarCallbackNative(Morphology_Operations));

            Cv2.CreateTrackbar("Element:\n 0: Rect - 1: Cross - 2: Ellipse", window_name,
                        ref morph_elem, max_elem,
                        Morphology_Operations);
            Cv2.CreateTrackbar("Kernel size:\n 2n +1", window_name,
                        ref morph_size, max_kernel_size,
                        Morphology_Operations);

            Morphology_Operations(0, IntPtr.Zero);
            Cv2.WaitKey(0);
            return;
        }

        void Morphology_Operations(int pos, IntPtr usedata)
        {
            // Since MORPH_X : 2,3,4,5 and 6
            MorphTypes operation = (MorphTypes)(morph_operator + 2);

            Mat element = Cv2.GetStructuringElement((MorphShapes)morph_elem, new Size(2 * morph_size + 1, 2 * morph_size + 1), new Point(morph_size, morph_size));
            Cv2.MorphologyEx(src, dst, operation, element);
            Cv2.ImShow(window_name, dst);
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值