c++ - OpenCV 中的 vector 比较 (C++)

标签 c++ opencv vector

我需要编写一个 OpenCV 程序,从摄像头画面中的几个人中检测出穿着带有 Logo 的特定 T 恤的人。

我可以使用 SURF 检测 Logo ,使用 HOGDescriptor 检测人。

然后我可以检查 Logo 边界框的角是否在绑定(bind)人的矩形的角内。

Logo 的角存储在:

std::vector< Point2f > scene_corners(4);

人周围矩形的角使用以下方式存储:

cv::Rect r = found[i];

我需要做如下比较:

if(scene_corners[0]>=r.tl() && scene_corners[2]<=r.br())

其中 r.tl() 和 r.br() 是矩形的角。

这行不通,我猜是因为操作数不兼容。 我该如何进行比较?提前致谢。

最佳答案

正如您所发现的,>= 运算符未针对 cv::Point 实例实现。您可以做的是构造一个 cv::Rect 来表示人的边界框。然后使用 Rect::contains() 方法来测试每个内部点。这应该符合您的比较标准。

// I assume that index 0 is top-left and index 2 is bottom-right
cv::Rect person_bounds(scene_corners[0], scene_corners[2]);
if (person_bounds.contains(r.tl()) && person_bounds.contains(r.br()))
{
    // do something...
}

关于c++ - OpenCV 中的 vector 比较 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206370/

相关文章:

c++ - 将父类转换为子类以避免冗余

c++ - 函数指针默认为 NULL 吗?

android - 如何在Android的OpenCV中优化我的算法?

opencv - 在 Python3.3 中安装 OpenCV

c++ - 由于运算符重载,我可以用 '=' 初始化 std::vector 吗?

c++ - 按类属性(例如名称)搜索类对象的 std::vector

c++ - 如何使用 openSSL C++ 以 PEM 格式存储 Diffie HellMan 对象的 key

c++ - 这2张魔法卡能发挥的最大技能是多少?

python-3.x - 通过点和线计算 CV2 单应性

javascript - JavaScript绘制流程图的绘图库