matlab中有名为rectint的函数功能是判断同一坐标系下两个矩形是否相交,返回交叠部分的面积大小,比较好用,且能用于多对矩形一起判断。最近仿照其改写了个C版本的,简单但很实用,一次判断一对矩形。
参数为自定义的rect 结构体;
struct rect
{
int upleftx;
int uplefty;
int downrightx;
int downrighty;
}
int rectint(rect a,rect b)
{
int length = max(0,(min(a.downrightx,b.downrightx )-max(a.upleftx ,b.upleftx )));
int height = max(0,(min(a.downrighty ,b.downrighty )-max(a.uplefty ,b.uplefty)));
int area = length*height;
return area;
}
注:matlab 中此函数坐标原点为右下方,但图像处理中大多左上角为(0,0)所以此函数更适合于图像处理中判断矩形框是否交叠。