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

相关推荐
audyxiao00117 分钟前
为了更强大的空间智能,如何将2D图像转换成完整、具有真实尺度和外观的3D场景?
人工智能·计算机视觉·3d·iccv·空间智能
范男3 小时前
基于Pytochvideo训练自己的的视频分类模型
人工智能·pytorch·python·深度学习·计算机视觉·3d·视频
mit6.8248 小时前
Linux下C#项目构建
开发语言·c#
顾道长生'9 小时前
(Arxiv-2025)SkyReels-A2:在视频扩散变换器中组合任意内容
人工智能·计算机视觉·音视频·多模态
Nita.9 小时前
.NET 中的延迟初始化:Lazy<T> 与LazyInitializer
c#·.net
CoovallyAIHub10 小时前
标注成本骤降,DINOv3炸裂发布!冻结 backbone 即拿即用,性能对标SOTA
深度学习·算法·计算机视觉
Enougme10 小时前
python-使用鼠标对图片进行涂抹&自定义绘图
python·opencv
飞翔的佩奇17 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
lxmyzzs19 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
Coovally AI模型快速验证20 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·yolo·计算机视觉·transformer·无人机