opencv Rect类数组
时间: 2023-11-17 15:06:23 浏览: 42
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
在OpenCV中,可以通过numpy数组的切片来裁剪图像。具体来说,可以使用以下代码来裁剪图像:
crop = frame[y:y+h, x:x+w]
其中,frame是读取的图像,x和y是裁剪区域的左上角坐标,w和h是裁剪区域的宽度和高度。裁剪后的图像存储在crop变量中。
除此之外,还可以使用cv2.selectROI函数来选择需要裁剪的区域,具体代码如下:
r = cv2.selectROI(frame, False, False)
crop = frame[int(r):int(r+r), int(r):int(r+r)]
其中,r是选择的区域,crop是裁剪后的图像。
另外,还可以使用Rect类来指定需要裁剪的区域,具体代码如下:
rect = Rect(x, y, w, h)
crop = image(rect)
其中,image是读取的图像,x和y是裁剪区域的左上角坐标,w和h是裁剪区域的宽度和高度。裁剪后的图像存储在crop变量中。