opencv Rect类数组
时间: 2023-11-17 09:06:23 浏览: 117
OpenCV中的Rect类表示一个矩形,包含矩形左上角的坐标和宽度、高度信息。可以创建一个Rect对象来表示一个矩形,也可以创建一个Rect数组来表示多个矩形。
创建一个Rect对象示例:
```
cv::Rect rect(10, 10, 100, 100);
```
这个Rect对象表示左上角坐标为(10,10),宽度为100,高度为100的矩形。
创建一个Rect数组示例:
```
cv::Rect rect_array[3];
rect_array[0] = cv::Rect(10, 10, 100, 100);
rect_array[1] = cv::Rect(150, 150, 50, 50);
rect_array[2] = cv::Rect(200, 200, 80, 80);
```
这个Rect数组包含三个Rect对象,分别表示三个不同的矩形。可以通过遍历数组来访问每个矩形的属性。
相关问题
OpenCV创建Rect类数组实现多区域roi截图c++
以下是使用OpenCV创建Rect类数组实现多区域ROI截图的示例代码:
```
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
int main()
{
Mat image = imread("test.jpg");
if (image.empty()) {
std::cout << "Could not open or find the image!" << std::endl;
return -1;
}
Rect rois[2] = { Rect(20, 20, 100, 100), Rect(150, 150, 200, 200) };
for (int i = 0; i < 2; i++) {
Mat roi_image = image(rois[i]);
std::string name = "ROI " + std::to_string(i + 1);
imshow(name, roi_image);
}
waitKey(0);
return 0;
}
```
在这个示例中,我们首先读取了一张图片,然后创建了一个Rect类数组来存储两个ROI区域的坐标和尺寸。接着我们使用一个循环来遍历这个数组,将每个ROI区域从原图中截取出来并显示在窗口中。最后我们使用waitKey()函数等待用户按下任意按键,以便程序可以正常退出。
请注意,如果您需要截取的ROI区域数量很多,可以使用动态数组或向量来存储Rect类对象。
opencv Mat类 赋值
`opencv`中的`Mat`类是图像处理的核心容器,类似于二维数组,它代表了一个矩阵,可以存储各种类型的图像数据,如灰度、RGB、BGR等。赋值操作在`Mat`类中主要用于初始化矩阵的内容或更新矩阵的数据。
你可以直接通过索引给`Mat`对象赋值,例如:
```cpp
cv::Mat src; // 创建一个空的Mat对象
// 初始化全零矩阵
src.create(5, 5, CV_8UC1); // 5x5的单通道8位无符号整型图像
uchar pixelValue = 255;
src.at<uchar>(0, 0) = pixelValue; // 设置左上角像素为白色
// 或者从另一个矩阵复制数据
cv::Mat anotherMat = ...; // 获取一个已有的图像矩阵
src = anotherMat; // 将anotherMat的值复制到src中
```
如果你想要改变`Mat`的一部分,也可以使用ROI(Region of Interest,兴趣区域)的概念:
```cpp
cv::Mat roi = src(Rect(x, y, width, height)); // 获取指定区域
roi.at<uchar>(i, j) = newPixelValue; // 更新ROI内的某个像素
```
阅读全文