cv::Rect概述

1.概要

cv::Rect 是 OpenCV(一个开源的计算机视觉和机器学习软件库)中用于表示矩形区域的类。

2.内容

cv::Rect 是 OpenCV(一个开源的计算机视觉和机器学习软件库)中用于表示矩形区域的类。它主要用于图像处理中定义或操作矩形区域,比如裁剪图像、绘制矩形框等。cv::Rect 类包含了矩形的左上角坐标(x, y)、宽度(width)和高度(height)。

构造函数

cv::Rect 提供了多种构造函数,允许你以不同的方式初始化矩形对象。以下是一些常用的构造函数:

  • cv::Rect(int x, int y, int width, int height): 通过指定左上角的坐标和矩形的宽度高度来构造矩形。
  • cv::Rect(const cv::Point& topLeft, const cv::Size& size): 通过指定左上角的点和矩形的大小来构造矩形。
  • cv::Rect(const cv::Point2f& topLeft, const cv::Size2f& size): 类似于上一个,但使用浮点数类型的坐标和大小。

成员函数

cv::Rect 类提供了一系列成员函数来访问和修改矩形的属性,以及进行一些基本的操作,比如:

  • area(): 计算并返回矩形的面积。
  • contains(const cv::Point& pt): 检查给定的点是否在矩形内。
  • size(): 返回矩形的大小(cv::Size 类型)。
  • tl(): 返回矩形的左上角坐标(cv::Point 类型)。
  • br(): 返回矩形的右下角坐标(cv::Point 类型)。

使用示例

下面是一个简单的使用 cv::Rect 的示例,演示如何定义一个矩形,检查一个点是否在该矩形内,并计算矩形的面积:

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 定义一个矩形,左上角坐标为 (10, 20),宽度为 50,高度为 30
    cv::Rect rect(10, 20, 50, 30);

    // 打印矩形的属性
    std::cout << "矩形的面积: " << rect.area() << std::endl;
    std::cout << "矩形的左上角: " << rect.tl() << std::endl;
    std::cout << "矩形的右下角: " << rect.br() << std::endl;

    // 检查点 (30, 40) 是否在矩形内
    cv::Point pt(30, 40);
    if (rect.contains(pt)) {
        std::cout << "点 (30, 40) 在矩形内。" << std::endl;
    } else {
        std::cout << "点 (30, 40) 不在矩形内。" << std::endl;
    }

    return 0;
}

在这个示例中,我们首先定义了一个矩形 rect,然后打印了它的面积、左上角和右下角的坐标。接着,我们检查了一个点 (30, 40) 是否在这个矩形内,并根据结果打印相应的消息。

3.关联知识

1.获取cv::Rect但最左侧坐标和最右侧坐标 

在 OpenCV 中,cv::Rect 类用于表示矩形区域,它包含了矩形的左上角坐标(xy)、宽度(width)和高度(height)。要获取矩形的最左侧坐标和最右侧坐标,你可以使用 cv::Rect 的成员函数和属性。

最左侧坐标实际上就是矩形的左上角坐标的 x 值,即 rect.x。而最右侧坐标可以通过将左上角坐标的 x 值与矩形的宽度相加得到,即 rect.x + rect.width - 1(因为坐标是从 0 开始的,所以要减 1 来得到最右侧的像素坐标)。

以下是一个简单的示例代码,演示如何获取 cv::Rect 的最左侧和最右侧坐标:

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 定义一个矩形,左上角坐标为 (10, 20),宽度为 50,高度为 30
    cv::Rect rect(10, 20, 50, 30);

    // 获取最左侧坐标
    int leftmostX = rect.x;
    std::cout << "最左侧坐标(X): " << leftmostX << std::endl;

    // 获取最右侧坐标
    int rightmostX = rect.x + rect.width - 1;
    std::cout << "最右侧坐标(X): " << rightmostX << std::endl;

    return 0;
}

在这个示例中,我们定义了一个矩形 rect,然后通过访问它的 x 属性和 width 属性来计算最左侧和最右侧的 x 坐标。注意,我们减去了 1 来得到最右侧的坐标,因为像素坐标是从 0 开始的。

如果你还需要获取矩形的最上方和最下方的 y 坐标,方法类似:最上方坐标就是 rect.y,而最下方坐标是 rect.y + rect.height - 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值