std::vector<cv::Rect>
是 C++ 中表示一个包含多个 cv::Rect
对象的动态数组(向量)的类型。这里,std::vector
是 C++ 标准库中的一个模板类,用于表示动态大小的数组,而 cv::Rect
是 OpenCV 库中用于表示矩形区域的一个类。
cv::Rect
通常包含四个成员变量:x
、y
、width
和 height
,分别表示矩形的左上角坐标和矩形的宽度与高度。
当你有一个 std::vector<cv::Rect>
时,你可以在这个向量中存储多个矩形区域,这在计算机视觉任务中非常有用,比如对象检测、面部识别或图像分割等场景。
以下是一个简单的示例,展示了如何使用 std::vector<cv::Rect>
:
#include <vector>
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 创建一个 std::vector<cv::Rect> 并初始化
std::vector<cv::Rect> rects = {
cv::Rect(10, 10, 50, 50), // 第一个矩形:左上角(10,10),宽50,高50
cv::Rect(70, 70, 40, 40) // 第二个矩形:左上角(70,70),宽40,高40
};
// 遍历 rects 向量并打印每个矩形的信息
for (const auto& rect : rects) {
std::cout << "Rectangle: x=" << rect.x << ", y=" << rect.y
<< ", width=" << rect.width << ", height=" << rect.height << std::endl;
}
// 假设你有一个OpenCV的Mat对象(图像),你可以在这些矩形区域上绘制边界框
cv::Mat image = cv::Mat::zeros(200, 200, CV_8UC3); // 创建一个200x200的黑色图像
for (const auto& rect : rects) {
cv::rectangle(image, rect, cv::Scalar(0, 255, 0), 2); // 在图像上用绿色线条绘制矩形
}
// 显示图像(需要OpenCV的imshow函数)
cv::imshow("Rectangles", image);
cv::waitKey(0); // 等待用户按键
return 0;
}
在这个例子中,我们首先创建了一个 std::vector<cv::Rect>
并初始化了两个矩形。然后,我们遍历这个向量并打印出每个矩形的信息。最后,我们假设有一个 OpenCV 的 Mat
对象(代表图像),并在这些矩形区域上绘制绿色的边界框,然后显示这个图像。
请注意,为了运行上述代码,你需要安装 OpenCV 库并正确配置你的项目以包含 OpenCV 的头文件和库文件。