大家好,又见面了,我是你们的朋友全栈君。
输入:
vector<float> p1; //y1min, x1min, y1max, x1max;
vector<float> p2; //y2min, x2min, y2max, x2max;
输出:
float IoU
代码:
float computeIoU(vector<float> p1, vector<float> p2)
{
//如果存在一个轴上,某个框的最小坐标大于另外一个框的最大坐标,则两框无重合。
if(p2[3]-p1[1]<0)||(p1[3]-p2[1]<0)||(p1[2]-p2[0]<0)||(p2[2]-p1[0]<0)
return 0;
//两框必有重合,计算重合面积
float h,w;
if(p1[0]<p2[0]){
if(p1[2]>p2[2]) h=p2[2]-p2[0];
else h=p1[2]-p2[0];
}
else{
if(p1[2]>p2[2]) h=p2[2]-p1[0];
else h=p1[2]-p1[0];
}
if(p1[1]<p2[1]){
if(p1[3]>p2[3]) w=p2[3]-p2[1];
else w=p1[3]-p2[1];
}
else{
if(p1[3]>p2[3]) w=p2[3]-p1[1];
else w=p1[3]-p1[1];
}
// 容斥原理计算IoU
return (h*w)/(p1[2]-p1[0])*(p1[3]-p1[1])+(p2[2]-p2[0])*(p2[3]-p2[1])-h*w)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128747.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...