如何从 C++ 人脸边界框中提取长度/宽度

Posted

技术标签:

【中文标题】如何从 C++ 人脸边界框中提取长度/宽度【英文标题】:How to extract length/width from c++ face bounding box 【发布时间】:2020-12-24 15:58:38 【问题描述】:

我正在使用 OpenCV c++ 来计算人脸的边界框。我正在使用此代码:

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

当我 cout 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++ 方法是什么,以便我可以这样做?

【问题讨论】:

【参考方案1】:

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

请在 docs.opencv.org 上look up that method

给你一个cv::Rect的向量

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

【讨论】:

以上是关于如何从 C++ 人脸边界框中提取长度/宽度的主要内容,如果未能解决你的问题,请参考以下文章

C++。从文件中读取形状名称、长度和宽度并使用它们来计算面积

如何计算边界矩形的宽度,以使文本包裹以适合特定比例?

如何在 dlib 和 C++ 中获取照片的宽度和高度?

限制select 框的长度

x + 宽度必须 <= bitmap.width()

怎么调整select框得宽度和高度