如何从 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++ 人脸边界框中提取长度/宽度的主要内容,如果未能解决你的问题,请参考以下文章