0
我目前使用OpenCV創建一個檢測車輛是否位於特定區域的系統。到目前爲止,我已經到了在每輛車周圍繪製Rect
的地步。我的下一步是找出這些矩形的中心點,看看它是否屬於特定的區域。將矩形切換爲一箇中心點
我意識到這樣做的最好的方法可能找到Rect
的四個角落的座標,然後取平均值x
平均y
- 協調找到中心點座標。但是,我不知道如何做到這一點。有沒有讓我直接訪問OpenCV的Rect
座標的功能?
我目前使用OpenCV創建一個檢測車輛是否位於特定區域的系統。到目前爲止,我已經到了在每輛車周圍繪製Rect
的地步。我的下一步是找出這些矩形的中心點,看看它是否屬於特定的區域。將矩形切換爲一箇中心點
我意識到這樣做的最好的方法可能找到Rect
的四個角落的座標,然後取平均值x
平均y
- 協調找到中心點座標。但是,我不知道如何做到這一點。有沒有讓我直接訪問OpenCV的Rect
座標的功能?
編輯原文:正如我們指出的,我們不能直接在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));
輝煌。謝謝! – Zetland 2015-04-03 15:55:28
但我如何從這些中找到中心點?似乎'+'運算符不允許與'tl'和'br'一起使用... – Zetland 2015-04-03 16:15:18
afaik cv :: Point允許使用「+」,但可能不允許使用「/」。嘗試0.5f *(rect.tl()+ rect.br()) – Micka 2015-04-03 16:30:27