C# OpenCvSharp Mat操作-创建Mat-Range

📸 C#中使用OpenCvSharp库的Range类详解

在C#中使用OpenCvSharp库时,Range类是一个用于定义范围的工具,通常用于选择图像的感兴趣区域(ROI, Region of Interest)。下面是对该类及其使用方法的详细解释和举例说明。😊

🔍 Range 类

定义

public class Range

{

public int Start { get; set; }

public int End { get; set; }

}

start: 范围的起始位置(行或列)。

end: 范围的结束位置(行或列)。

作用或原理

Range类主要用于定义一个矩形区域的行或列范围,可以利用该类来选择图像的特定区域。通过组合行和列的范围,可以提取出一个感兴趣的子区域。🔍

💻 示例代码

示例1:提取图像的特定行范围

假设我们有一张图像,我们想要提取从第10行到第20行的部分。

csharp 复制代码
using OpenCvSharp;

class Program
{
    static void Main()
    {
        // 读取图像
        Mat src = Cv2.ImRead("example.jpg");

        // 定义行范围
        Range rowRange = new Range(10, 20);

        // 提取指定行范围的子图像
        Mat roi = src.RowRange(rowRange.Start, rowRange.End);

        // 显示子图像
        Cv2.ImShow("ROI", roi);
        Cv2.WaitKey(0);
    }
}
示例2:提取图像的特定列范围

假设我们有一张图像,我们想要提取从第30列到第50列的部分。

csharp 复制代码
using OpenCvSharp;

class Program
{
    static void Main()
    {
        // 读取图像
        Mat src = Cv2.ImRead("example.jpg");

        // 定义列范围
        Range colRange = new Range(30, 50);

        // 提取指定列范围的子图像
        Mat roi = src.ColRange(colRange.Start, colRange.End);

        // 显示子图像
        Cv2.ImShow("ROI", roi);
        Cv2.WaitKey(0);
    }
}
示例3:提取图像的特定矩形区域

假设我们有一张图像,我们想要提取从第10行到第20行和从第30列到第50列的矩形区域。

csharp 复制代码
using OpenCvSharp;

class Program
{
    static void Main()
    {
        // 读取图像
        Mat src = Cv2.ImRead("example.jpg");

        // 定义行和列范围
        Range rowRange = new Range(10, 20);
        Range colRange = new Range(30, 50);

        // 提取指定矩形区域的子图像
        Mat roi = src[rowRange.Start, rowRange.End, colRange.Start, colRange.End];

        // 显示子图像
        Cv2.ImShow("ROI", roi);
        Cv2.WaitKey(0);
    }
}
示例4:提取图像的特定矩形区域(使用Rect)

有时候,使用Rect类来定义感兴趣区域会更加方便。

csharp 复制代码
using OpenCvSharp;

class Program
{
    static void Main()
    {
        // 读取图像
        Mat src = Cv2.ImRead("example.jpg");

        // 定义感兴趣区域
        Rect roiRect = new Rect(30, 10, 20, 10); // x, y, width, height

        // 提取指定矩形区域的子图像
        Mat roi = new Mat(src, roiRect);

        // 显示子图像
        Cv2.ImShow("ROI", roi);
        Cv2.WaitKey(0);
    }
}

📚 总结

Range类在OpenCvSharp中是一个非常有用的工具,可以帮助我们轻松地选择图像的特定区域。通过定义行和列的范围,我们可以提取出感兴趣的子图像区域,从而进行进一步的图像处理和分析。🖼️

相关推荐
阿蒙Amon2 小时前
C# Linq to SQL:数据库编程的解决方案
数据库·c#·linq
iCxhust5 小时前
c# U盘映像生成工具
开发语言·单片机·c#
emplace_back6 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
蹦蹦跳跳真可爱5897 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
阿蒙Amon8 小时前
为什么 12 版仍封神?《C# 高级编程》:从.NET 5 到实战架构,进阶者绕不开的必修课
开发语言·c#
深海潜水员8 小时前
【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现
游戏·unity·c#
开开心心_Every8 小时前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
Chef_Chen9 小时前
从0开始学习计算机视觉--Day08--卷积神经网络
学习·计算机视觉·cnn
小码编匠10 小时前
C# 上位机开发怎么学?给自动化工程师的建议
后端·c#·.net