2015-04-03 28 views
0

我目前使用OpenCV創建一個檢測車輛是否位於特定區域的系統。到目前爲止,我已經到了在每輛車周圍繪製Rect的地步。我的下一步是找出這些矩形的中心點,看看它是否屬於特定的區域。將矩形切換爲一箇中心點

我意識到這樣做的最好的方法可能找到Rect的四個角落的座標,然後取平均值x平均y - 協調找到中心點座標。但是,我不知道如何做到這一點。有沒有讓我直接訪問OpenCV的Rect座標的功能?

回答

1

編輯原文:正如我們指出的,我們不能直接在tl()和br()上使用'+'運算符。

使用此,而不是得到一個矩形的中心:

Point p1 = new Point(100, 100); 
Point p2 = new Point(600, 800); 
Rect myrect = new Rect(p1, p2); 
System.out.println(String.format("Rectangle: %s", myrect)); 

Point centroid = new Point(myrect.x + 0.5*(myrect.width), myrect.y + 0.5*(myrect.height)); 
System.out.println(String.format("centroid: %s", centroid)); 

此打印:

Rectangle: {100, 100, 500x700} 
centroid: {350.0, 450.0} 

老答案:

[使用矩形的方法:

tl() 
br() 

獲得頂級樂FT和右下點,分別]

如果你確實想使用TL,你可以做BR方法:

Point anotherCentroid = new Point(0.5 * (myrect.br().x + myrect.tl().x), 0.5 * (myrect.br().y + myrect.tl().y)); 
+0

輝煌。謝謝! – Zetland 2015-04-03 15:55:28

+0

但我如何從這些中找到中心點?似乎'+'運算符不允許與'tl'和'br'一起使用... – Zetland 2015-04-03 16:15:18

+0

afaik cv :: Point允許使用「+」,但可能不允許使用「/」。嘗試0.5f *(rect.tl()+ rect.br()) – Micka 2015-04-03 16:30:27