C++ 两个bb之间的重叠分数

C++ 两个bb之间的重叠分数,c++,overlap,bounding-box,C++,Overlap,Bounding Box,我正在尝试创建一个函数来计算两个边界框之间的交比。我有两个矩形的矩形信息。我创建了一个交集函数,它返回两个框之间的交集的双倍分数: double Detection::overlapBB(Rect a, Rect b){ int xa1 = a.x; int xa2 = a.x + a.width; int ya1 = a.y; int ya2 = a.y + a.height; int xb1 = b.x; int xb2 = b.x + b.width; int yb1 = b.y; in

我正在尝试创建一个函数来计算两个边界框之间的交比。我有两个矩形的矩形信息。我创建了一个交集函数,它返回两个框之间的交集的双倍分数:

double Detection::overlapBB(Rect a, Rect b){

int xa1 = a.x; int xa2 = a.x + a.width;
int ya1 = a.y; int ya2 = a.y + a.height;
int xb1 = b.x; int xb2 = b.x + b.width;
int yb1 = b.y; int yb2 = b.y + b.height;

cout << "The first rectangle:("<< xa1 << "," <<ya1 <<"),(" <<xa2<<"," <<ya2 <<")" <<endl;
cout << "The second rectangle:("<< xb1 << "," <<yb1 <<"),(" <<xb2<<"," <<yb2 <<")" <<endl;


int surfaceA = a.width*a.height;
int surfaceB = b.width*b.height;

int xn1 = Max(xa1, xb1); int yn1 = Max(ya1, yb1);
int xn2 = Min(xa2, xb2); int yn2 = Min(ya2, yb2);

 cout << "The second rectangle:("<< xn1 << "," <<yn1 <<"),(" <<xn2<<"," <<yn2 <<")" <<endl;

//int SI = (xn2 - xn1)*(yn2-yn1);
int SI = Max(0, Max(xa2, xb2) - Min(xa1, xb1)) * Max(0, Max(ya2, yb2) - Min(ya1, yb1));
int SU = surfaceA +surfaceB - SI;

cout << SI << " " <<SU << " " <<surfaceA<< " " <<surfaceB << endl;

double intersection = ((double)SI/(double)SU);


return intersection;

}
双重检测::重叠BB(矩形a,矩形b){ int xa1=a.x;int xa2=a.x+a.width; int ya1=a.y;int ya2=a.y+a.height; int xb1=b.x;int xb2=b.x+b.width; int yb1=b.y;int yb2=b.y+b.height;
是否可以检查这个范例