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

时间:2015-04-05 10:26:24

标签: java android opencv

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

我在Android中使用OpenCV进行图像处理。 任何帮助都非常感谢。感谢

1 个答案:

答案 0 :(得分: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

希望这有帮助。