我一直在寻找一些C ++内置函数或已实现函数,用于根据IOU(联合交集)又称Jaccard系数来计算两个椭圆重叠,显然,我发现它在{ {3}}
static inline float rotatedRectIOU(const RotatedRect& a, const RotatedRect& b)
{
std::vector<Point2f> inter;
int res = rotatedRectangleIntersection(a, b, inter);
if (inter.empty() || res == INTERSECT_NONE)
return 0.0f;
if (res == INTERSECT_FULL)
return 1.0f;
float interArea = contourArea(inter);
return interArea / (a.size.area() + b.size.area() - interArea);
}
由于我使用的是旧版OpenCV,因此我尝试仅复制代码,因为它似乎不依赖于任何其他资源。代码运行非常顺利。但是,结果是非常错误的,我不确定为什么。