2012-06-21 196 views
5

這是關於使用C中的OpenCV檢測圖像中文本的項目。該過程用於檢測相應輪廓內外的顏色,以及如何繪製法線在等間距位置的輪廓上並且提取法線端點的對應位置中的像素顏色。在opencv中查找輪廓的長度

我想使用下面的代碼來實現這個,但它不工作。我的意思是,它繪製了法線,但不是等間距的。

for(; contours!=0 ; contours = contours->h_next) 
{ 
     CvScalar color = CV_RGB(rand()&255, rand()&255, rand()&255); 

     cvDrawContours(cc_color, contours, color, CV_RGB(0,0,0), -1, 1, 8, cvPoint(0,0)); 
     ptr = contours; 
     for(i=1; i<ptr->total; i++) 
     { 
     p1 = CV_GET_SEQ_ELEM(CvPoint, ptr, i); 

     p2 = CV_GET_SEQ_ELEM(CvPoint, ptr, i+1); 

     x1 = p1->x; 
     y1 = p1->y; 

     x2 = p2->x; 
     y2 = p2->y; 
     printf("%d %d  %d %d\n",x1,y1,x2,y2); 
     draw_normals(x1,y1,x2,y2); 
    } 
} 

那麼,有沒有辦法找到一個輪廓的長度,這樣我可以通過法線我想畫的數量除以它。提前致謝。

編輯:draw_normal函數繪製傳遞給它的兩個點之間的法線作爲參數。

+0

的原始圖像,如果上傳你得到的輸出與期望的輸出會爲這個問題是很大的 –

回答

9

那麼有沒有辦法找到輪廓的長度?

是的,您可以使用OpenCV標準函數cvarcLength()找到輪廓的長度。

Check Documentation here.

+0

確定..得到它.. :) 但它是如何返回的長度是多少?我認爲它會返回輪廓周邊所包含的像素數量。所以我注意到返回類型是雙倍的,所以我有點困惑。 – bluechill

+0

您需要檢查來源:http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/shapedescr.cpp(45行以後) –

+0

此外,輪廓不會沒有所有的邊界點。要查看它的功能,請訪問:http://opencvpython.blogspot.in/2012/06/hi-this-article-is-tutorial-which-try.html –