2016-02-26 76 views
0

我有一個視頻由不同的對象,如正方形,矩形,三角形組成。我以某種方式需要檢測和顯示只有方形對象。所以在每一幀中,如果有一個正方形,那就很好,但如果有一個三角形或矩形,就應該顯示它。我正在使用背景減法,並且能夠檢測到所有三個對象並在它們周圍創建邊界框。但我無法弄清楚如何只顯示方形對象。如何使用Python檢測視頻opencv中的對象?

+0

你嘗試過一些東西,比如[opencv官方示例](https://github.com/Itseez/opencv/blob/master/samples/python/squares的.py)? – Miki

+0

向我們展示您嘗試過的代碼。 –

回答

3

您可以使用下面的算法:

-Perform背景減法,你正在做的目前

在輪廓

-enclose前景(使用findContours(,,,),然後drawContours(,,,)功能)

-enclose獲得輪廓在邊界框(使用boundingRect(,,,)函數)

邊界框的面積-if近似等於該封閉輪廓,那麼形狀是正方形或矩形,不三角形。 (包圍三角形的方框的很大一部分將位於三角形之外)

-if boundingBox的高度大約等於它的寬度,那麼它就是一個正方形。 (通過Rect.height和Rect.width訪問高度和寬度)

1

你的物體如何填充或只是一個輪廓? 在任何一種情況下,我會採用的方法是通過查找最大梯度或僅通過邊界框來檢測頂點。頂點將位於邊界框上。一旦有頂點,就可以通過查找連續頂點之間的距離來判斷對象是正方形還是矩形。

相關問題