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

Java 如何在openCV中将轮廓转换为图像中心?,java,android,opencv,Java,Android,Opencv,我在安卓上做一个图像处理项目。目前,我的任务是提取对象并将其转换到图像中心,以便轻松地从中提取特征。 我已经提取了对象,现在我想将其平移到图像的中心并旋转它,使其在图像上水平对齐 我正在Android中使用OpenCV进行图像处理。 非常感谢您的帮助。谢谢我建议使用以下技巧 矢量轮廓——opencv轮廓是点的矢量。所以你可以按你想要的距离翻译它们。所以在C++中,我会做以下的翻译: void shifcontour(vector<Point>& contour, int x,

我在安卓上做一个图像处理项目。目前,我的任务是提取对象并将其转换到图像中心,以便轻松地从中提取特征。 我已经提取了对象,现在我想将其平移到图像的中心并旋转它,使其在图像上水平对齐

我正在Android中使用OpenCV进行图像处理。
非常感谢您的帮助。谢谢

我建议使用以下技巧

矢量轮廓
——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;
    }
}
现在你的轮廓正在被转换。接下来,您必须旋转它,使其水平对齐。可以使用opencv提供的仿射变换按指定角度旋转图像


希望这有帮助。

谢谢你的帮助。!!
(x_centre,y_centre),(majoraxis,minoraxis),angle = cv2.fitEllipse(contour)