OpenCVSharp - 图像滤波

这篇博客通过C#的OpenCVSharp库,详细介绍了如何手敲代码运行OpenCV官方的图像滤波教程。涵盖了blur、GaussianBlur、medianBlur和bilateralFilter等核心函数,通过不同大小的核对图像进行平滑处理,展示了各种滤波效果。
摘要由CSDN通过智能技术生成

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

图像滤波

OpenCV教程链接:https://docs.opencv.org/4.5.0/dc/dd3/tutorial_gausian_median_blur_bilateral_filter.html

核心函数:

  • blur()
  • GaussianBlur()
  • medianBlur()
  • bilateralFilter()

 

using OpenCvSharp;
using System;

namespace ConsoleApp1
{
    class tutorial3 : ITutorial
    {
        int DELAY_CAPTION = 1500;
        int DELAY_BLUR = 100;
        int MAX_KERNEL_LENGTH = 31;
        Mat src;
        Mat dst;

        string window_name = "Smoothing Demo";

        public void Run()
        {
            Cv2.NamedWindow(window_name, WindowFlags.AutoSize);
            string filename = "I:\\csharp\\images\\lena.jpg";
            src = Cv2.ImRead(filename, ImreadModes.Color);
            if (src.Empty())
            {
                Console.WriteLine(" Error opening image{0}\n", filename);
            }
            if (display_caption("Original Image") != 0)
            {
                return ;
            }
            dst = src.Clone();
            if (display_dst(DELAY_CAPTION) != 0)
            {
                return ;
            }
            if (display_caption("Homogeneous Blur") != 0)
            {
                return ;
            }
            for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
            {
                Cv2.Blur(src, dst, new Size(i, i), new Point(-1, -1));
                if (display_dst(DELAY_BLUR) != 0)
                {
                    return ;
                }
            }
            if (display_caption("Gaussian Blur") != 0)
            {
                return ;
            }
            for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
            {
                Cv2.GaussianBlur(src, dst, new Size(i, i), 0, 0);
                if (display_dst(DELAY_BLUR) != 0)
                {
                    return;
                }
            }
            if (display_caption("Median Blur") != 0)
            {
                return;
            }
            for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
            {
                Cv2.MedianBlur(src, dst, i);
                if (display_dst(DELAY_BLUR) != 0)
                {
                    return ;
                }
            }
            if (display_caption("Bilateral Blur") != 0)
            {
                return ;
            }
            for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
            {
                Cv2.BilateralFilter(src, dst, i, i * 2, i / 2);
                if (display_dst(DELAY_BLUR) != 0)
                {
                    return ;
                }
            }
            display_caption("Done!");
            return;
        }


        private int display_caption(string caption)
        {
            dst = Mat.Zeros(src.Size(), src.Type());
            Cv2.PutText(dst, caption,
                 new Point(src.Cols / 4, src.Rows / 2),
                 HersheyFonts.HersheyComplex, 1, new Scalar(255, 255, 255));
            return display_dst(DELAY_CAPTION);
        }

        private int display_dst(int delay)
        {
            Cv2.ImShow(window_name, dst);
            int c = Cv2.WaitKey(delay);
            if (c >= 0) { return -1; }
            return 0;
        }

    }
}

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值