2016-08-14 111 views
1

寬度50,高度100和角度0的橢圓將與寬度100,高度50和角度90的橢圓相同 - 即一個是另一個的旋轉。cv2.fitEllipse如何處理旋轉的寬度/高度?

cv2.fitEllipse如何處理?它是否以某種規格化形式返回橢圓(即拾取角度使得寬度始終爲<高度),還是可以提供任何輸出?

我問,因爲我試圖確定兩個擬合橢圓是否相似,我不確定是否必須考慮這些事情。文檔根本沒有解決這個問題。

+0

AFAIK此算法用於:http://www.bmva.org/bmvc/1995/bmvc-95-050.pdf也許有附加信息 – Micka

回答

3

您可以在OpenCV源代碼中看到fitEllipse橢圓的高度始終大於寬度。

如果寬度大於高度,則交換widthheight,並更正angleboxRotatedRect定義橢圓:

if(box.size.width > box.size.height) 
{ 
    float tmp; 
    CV_SWAP(box.size.width, box.size.height, tmp); 
    box.angle = (float)(90 + rp[4]*180/CV_PI); 
} 
0

根據經驗,我運行了匹配數千個橢圓的代碼,並且我從來沒有得到一個返回值,其中返回的寬度大於返回的高度。所以看來OpenCV正常化了橢圓,例如height >= width

相關問題