IOU

交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。一般大于0.5就算成功了。

#include <iostream>

#include <cmath>//fabs,用于double等高精度求绝对值,整型使用cstdlib的abs
using namespace std;
double ax1;//第一个矩形左上角横坐标
double ay1;//第一个矩形左上角纵坐标
double ax2;//第一个矩形右下角横坐标
double ay2;//第一个矩形右下角纵坐标
double bx1;//第一个矩形左上角横坐标
double by1;//第二个矩形左上角纵坐标
double bx2;//第二个矩形右上角横坐标
double by2;//第二个矩形右上角横坐标

double calculateIOU(double ax1,double ay1,double ax2,double ay2,double bx1,double by1,double bx2,double by2){
    double a_area=fabs((ax1-ax2)*(ay1-ay2));
    double b_area=fabs((bx1-bx2)*(by1-by2));
    double x1=max(ax1,bx1);
    double y1=min(ay1,by1);
    double x2=min(ax2,bx2);
    double y2=max(ay2,by2);
    double inner_area = fabs((x2-x1)*(y2-y1));
    double res = inner_area/(a_area+b_area-inner_area);
}
原文地址:https://www.cnblogs.com/pacino12134/p/11404874.html