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

相关推荐
jay神4 小时前
深度学习如何确定Batch Size的大小?
人工智能·深度学习·计算机视觉·毕业设计·课程设计·batch
JarmanYuo5 小时前
YOLO 涨点研究(六):网络结构改进之小目标增强篇1——无人机视角下的车辆与行人检测
人工智能·pytorch·python·yolo·计算机视觉·无人机
格林威5 小时前
C# 相机图像阴影校正:使用OpenCvSharp实现工业相机阴影平场校正功能
人工智能·数码相机·opencv·计算机视觉·c#·机器视觉·工业相机
合合技术团队5 小时前
论文解读|合合信息与上海交通大学打造DocIQ模型,AI为文档图像质量“做体检”
人工智能·计算机视觉
俊昭喜喜里6 小时前
c#中的构造函数
开发语言·数据库·c#
hahaha60166 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
点心的游戏开发世界15 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
淡海水16 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
点心的游戏开发世界16 小时前
Unity C# 脚本学习笔记:泛型
学习·unity·c#
乐迪信息18 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉