2012-11-15 226 views
1

大家好日子。計算輪廓的x,y軸長度

我仍然在使用the same old program,到目前爲止,我設法根據輪廓的瞬間計算找到最大輪廓的面積和座標。

double m_00 = cvGetSpatialMoment(&moments, 0, 0); //The area 
double m_10 = cvGetSpatialMoment(&moments, 1, 0); 
double m_01 = cvGetSpatialMoment(&moments, 0, 1); 
float gravityX = (m_10/m_00);  //center of x-axis    
float gravityY = (m_01/m_00);  //center of y-axis 

...和我所得到的是這樣的:

The screenshot

...這是工作很好。但現在我想x軸和輪廓/對象的y軸的長度是這樣的:

What I need

問題是是有可以計算X任何功能輪廓的軸和y軸長度?如果是這樣,任何人都可以給我一些線索如何做到這一點?

在此先感謝。乾杯。

P/S:The program我上面鏈接的是舊的,所以它有一些錯誤。

+0

你見過這個嗎?它有幫助嗎? http://stackoverflow.com/questions/9971162/i-have-prob-with-this-coding-related-to-find-the-contours –

+0

似乎相當直接...只是遍歷整個圖像,並注意到被標記爲在輪廓上的像素的最小和最大x和y值。您的紅色輪廓圖像是如何生成的? – Rook

+0

@Rook:我使用cvDrawContours作爲紅色輪廓。 –

回答

0

我花了差不多一天的時間圍繞谷歌搜索答案,終於找到了一種替代方法來獲取對象的寬度和高度,這是通過使用 cvBoundingRect函數。基本上它會在輪廓周圍形成一個直立的矩形框,所以我只需要檢索框的寬度和高度即可獲得我想要的效果。

代碼:

Rect rect= cvBoundingRect(contour,0); 
    double pt1, pt2; 
    pt1 =rect.width;  //width 
    pt2 =rect.height;  //heigth 

BTW感謝你的幫助。乾杯。