2015-04-05 94 views
0

我正在處理android中的圖像處理項目。目前我的任務是提取對象並將其轉換爲圖像的中心,以便我可以輕鬆地從中提取特徵。 我已經提取了對象,現在我想將它翻譯爲圖像的中心並旋轉它,以在圖像上水平對齊它。如何將輪廓轉換爲openCV中圖像的中心?

我在Android中使用OpenCV進行圖像處理。 任何幫助是高度讚賞。由於

回答

1

我建議以下技術..

vector<point>contour - OpenCV的輪廓點的矢量。所以你可以通過你想要的距離來翻譯它們。因此,在C++中我會做如下翻譯的輪廓

void shifcontour(vector<Point>& contour, int x, int y) 
{ 
    for (size_t i=0; i<contour.size(); i++) 
    { 
     contour[i].x += x; 
     contour[i].y += y; 
    } 
} 

找到x和y,則可以使用圖像的中心和中心輪廓之間的差異。你可以使用fitEllipse來計算輪廓的中心。這將使您粗略地逼近輪廓的中心。你也將得到輪廓所指向的角度。

(x_centre,y_centre),(majoraxis,minoraxis),angle = cv2.fitEllipse(contour) 

現在輪廓正在被翻譯。接下來你必須旋轉它,水平對齊它。您可以使用opencv提供的仿射變形按指定的角度旋轉圖像。

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html

希望這有助於。

+0

感謝您的幫助。 – Aleem 2015-04-09 15:28:33