在opencv中,對於跟蹤的目標,通常用矩形進行圈定,但是opencv的cvfindcontours卻不會那麼精確,通常會將乙個目標分成若干個相鄰或相交或包含關係的矩形,此時需要判斷這些矩的關係,以
便進行融合,矩形之間的關係通常又很複雜,通常會有如下關係
在網上還確實不好找,有的是基於兩條線是否相交,然後進行兩兩相交16次判斷,但很多演算法有bug,最典型是兩條x一樣的直線不相交會判斷成相交,另外呢,由於矩形是平的或是垂直的,沒必要複雜的數**算。
做了兩個函式,乙個是判斷線相交,乙個是判斷矩形相交,**不用細看,直接用就行了
1、直線是否相交
bool islinesegmentcross(point pt1, point pt2, point pt3, point pt4,int ilinesrelation)
}else
//堅線}}
else
//垂直關係
}else
//堅線}}
return true;
}2、矩形是否相交
bool cnetxplayerdlg::rectiscross(rect _rect1,rect _rect2)
直接使用第二個函式就行了,**略有點....,但絕對沒有bug,效能肯定是最棒的
判斷矩形是否相交
假定矩形是用一對點表達的 minx,miny maxx,maxy 那麼兩個矩形 rect1 rect2 相交的結果一定是個矩形,構成這個相交矩形rect的點對座標是 minx max minx1,minx2 miny max miny1,miny2 maxx min maxx1,maxx2 maxy...
判斷兩矩形是否相交
判斷兩矩形是否相交,因若矩形相交時,在x軸方向和y軸方向必然存在重疊的部分,因此可將其轉化為兩條直線是否重疊的問題上。假設矩形的表示方法為 class rectangle x,y為矩形的位置點,width表示長,height表示寬。width與height可為正負數。width 0,height 0...
判斷圓和矩形是否相交(非面積相交)
題解。問題很簡單,給你乙個矩形和乙個圓,問你是否他們相交。注意,這裡的相交不是面積相交。也就是說,圓在矩形內 且不相切 是不相交的。或者矩形在圓內 且矩形的四個點不在圓上 也是不相交的。那麼,我們怎麼來判斷呢?中間輪廓線是矩形的邊,各向外和內距離為圓半徑r劃線 當然,四個角的肯定不太標準 如果圓心在...