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

相关推荐
小满Autumn42 分钟前
log4net 日志框架 — 从配置到实战速查手册
笔记·c#·.net·wpf·上位机·log4net
硅谷秋水5 小时前
面向长上下文自动驾驶的规划对齐Token压缩
人工智能·深度学习·机器学习·计算机视觉·自动驾驶
JaydenAI5 小时前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
YOLO数据集集合7 小时前
无人机山地灾害巡检数据集 | 滑坡多区域实例分割 遥感影像解译 地质灾害预警深度学习数据10296期
人工智能·深度学习·目标检测·计算机视觉·无人机
北域码匠7 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
庄周迷蝴蝶8 小时前
Vision Banana
人工智能·计算机视觉
123的故事8 小时前
工具分享(7)-多Excel文件内容查询工具
c#·excel·实用工具
iCxhust10 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
Java患者·11 小时前
《Python 人脸识别入门实践:从人脸检测到人脸比对完整实现》
开发语言·python·opencv·目标检测·计算机视觉·目标跟踪·视觉检测
ceclar12311 小时前
C# 的任务并行库(TPL)
开发语言·c#·.net