如何从c++面边界框中提取长度/宽度



我正在使用OpenCV c++来计算面的边界框。我使用的是这个代码:

haarClassifier.detectMultiScale(frameGray, boxes, 1.1, 6, CASCADE_SCALE_IMAGE, minFaceSize);

当我将boxes发送到终端时,我得到这样的结果:

[485 x 485 from (358, 138)]

这是我需要的所有信息,但我不知道如何在不转换为字符串和索引的情况下提取长度/宽度和起始坐标,这绝对不是最好的方法。

从本质上讲,我想这么做是因为我试图把盒子分成4个象限。在这个例子中,我想做以下操作(伪代码(:

// get box dimensions/coords
length = 485
width = 485
top_left_x_coord = 358
top_left_y_coord = 138
// create quadrants
quadrant_length = length/2
quadrant_width = length/2
top_left_x_coord = 358
top_left_y_coord = 138
top_right_x_coord = top_left_x_coord + quadrant_width
top_right_y_coord = top_left_y_coord
bottom_left_x_coord = top_left_x_coord
bottom_left_y_coord = top_left_y_coord + quadrant_length
bottom_right_x_coord = bottom_left_x_coord + quadrant_width
bottom_right_y_coord = bottom_left_y_coord
// return the following
// top-left
[length x width from (top_left_x_coord, top_left_y_coord)]
// top-right
[length x width from (top_right_x_coord, top_right_y_coord)]
// bottom-left
[length x width from (bottom_left_x_coord, bottom_left_y_coord)]
// bottom-right
[length x width from (bottom_right_x_coord, bottom_right_y_coord)]

[485 x 485 from (358, 138)]中提取长度、宽度、x和y,这样我就可以做到这一点,最好、最c++的方法是什么?

不要将其转换为字符串并尝试解析。

请在docs.opencv.org 上查找该方法

给你一个cv::Rect矢量

使用docs.opencv.org了解如何访问cv::Rect的各个部分。Rect类型具有数字字段。