如何将轮廓转换为openCV中图像的中心?

问题描述:

我正在处理android中的图像处理项目。目前我的任务是提取对象并将其转换为图像的中心,以便我可以轻松地从中提取特征。 我已经提取了对象,现在我想将它翻译为图像的中心并旋转它,以在图像上水平对齐它。如何将轮廓转换为openCV中图像的中心?

我在Android中使用OpenCV进行图像处理。 任何帮助是高度赞赏。由于

我建议以下技术..

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