• C# OpenCvSharp Mat操作-常用Mat数学运算


    📸 使用OpenCvSharp进行图像处理

    在使用OpenCvSharp进行图像处理时,理解并合理使用这些函数可以帮助我们从图像中提取各种统计特征。这些特征可以用于图像分类、匹配等任务。下面我们逐一详细介绍这些函数,并通过C#代码示例说明它们的使用。📷

    mean 函数

    🔍 作用或原理
    计算输入图像或矩阵数据的均值。如果是多通道图像,则分别统计每个通道的均值。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src = Cv2.ImRead("path_to_image.jpg"); // 读取图像
            Scalar meanValue = Cv2.Mean(src); // 计算均值
            Console.WriteLine($"Mean: {meanValue}");
        }
    }
    

    meanStdDev 函数

    🔍 作用或原理
    计算输入图像的像素均值和标准偏差。如果是多通道图像,则分别统计每个通道的均值和标准偏差。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src = Cv2.ImRead("path_to_image.jpg"); // 读取图像
            Mat mean = new Mat();
            Mat stddev = new Mat();
            Cv2.MeanStdDev(src, mean, stddev); // 计算均值和标准偏差
    
            Console.WriteLine($"Mean: {mean.At<double>(0)}, StdDev: {stddev.At<double>(0)}");
        }
    }
    

    sum 函数

    🔍 作用或原理
    计算输入图像的像素值之和。如果是多通道图像,则分别统计每个通道的像素值之和。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src = Cv2.ImRead("path_to_image.jpg"); // 读取图像
            Scalar sumValue = Cv2.Sum(src); // 计算像素值之和
            Console.WriteLine($"Sum: {sumValue}");
        }
    }
    

    minMaxLoc 函数

    🔍 作用或原理
    计算输入图像中像素值的最小值和最大值以及最小值和最大值的位置。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src = Cv2.ImRead("path_to_image.jpg", ImreadModes.Grayscale); // 读取灰度图像
            double minVal, maxVal;
            Point minLoc, maxLoc;
            Cv2.MinMaxLoc(src, out minVal, out maxVal, out minLoc, out maxLoc); // 计算最小值和最大值及其位置
    
            Console.WriteLine($"Min Value: {minVal} at {minLoc}, Max Value: {maxVal} at {maxLoc}");
        }
    }
    

    countNonZero 函数

    🔍 作用或原理
    计算输入图像中像素值不为“0”的像素数量。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src = Cv2.ImRead("path_to_image.jpg", ImreadModes.Grayscale); // 读取灰度图像
            int nonZeroCount = Cv2.CountNonZero(src); // 计算非零像素数量
            Console.WriteLine($"Non-zero pixels: {nonZeroCount}");
        }
    }
    

    norm 函数

    🔍 作用或原理
    计算输入图像的范数。输入图像可以是单独一幅图像,也可以输入两幅图像,计算两幅图像之间的范数。

    using OpenCvSharp;
    
    class Program
    {
        static void Main()
        {
            Mat src1 = Cv2.ImRead("path_to_image1.jpg", ImreadModes.Grayscale); // 读取灰度图像
            Mat src2 = Cv2.ImRead("path_to_image2.jpg", ImreadModes.Grayscale); // 读取灰度图像
    
            double normValue = Cv2.Norm(src1, src2, NormTypes.L2); // 计算两幅图像之间的L2范数
            Console.WriteLine($"Norm (L2): {normValue}");
        }
    }
    

    通过这些示例代码,你可以更好地理解如何在C#中使用OpenCvSharp库的这些函数来进行图像处理和特征提取。每个函数都有其特定的用途,可以根据实际需求选择合适的函数来完成相应的图像处理任务。📊

  • 相关阅读:
    在ffmpeg上实现libhevc wrapper
    45岁程序员精通各种技术体系,竟然连个面试机会都没有?
    一比一还原axios源码(二)—— 请求响应处理
    java毕业设计《数据结构与算法》网上教学系统mybatis+源码+调试部署+系统+数据库+lw
    js实现tab栏切换
    SpringBoot2.4框架
    类和对象(中下)
    3D激光SLAM:LeGO-LOAM论文解读---硬件系统部分
    java--07 面向对象
    pandas drop 方法
  • 原文地址:https://blog.csdn.net/cncWay/article/details/139619744