在图像旋转一定程度后计算新坐标

时间:2018-06-26 08:26:08

标签: android opencv

enter image description here enter image description here

嗨,

我是Android新手。我正在开发一个应用程序,该应用程序可以捕获图像边缘并对其进行处理。用从Open CV获得的坐标捕获图像后,我正在图像顶部绘制一种多边形的形状。除非我旋转它,否则一切正常。当我旋转时,我也希望按照图片所示移动绘制的坐标。如果旋转90度,则需要根据新度计算坐标并相应绘制边界。我拥有所有第一屏幕截图的坐标的中心。下面是相同的代码:

private PointF getCenter(HashMap<Integer, PointF> points){
    PointF centerPoint = new PointF();
    int size = points.size();
    for(Integer i : points.keySet()){
        PointF p = points.get(i);
        centerPoint.x += p.x / size;
        centerPoint.y += p.y / size;
    }
    Log.d(TAG, " centerPoint.x "+centerPoint.x);
    Log.d(TAG, " centerPoint.y "+centerPoint.y);
    return centerPoint;
}  

但是我在这里停留在如何计算旋转图像的新坐标上。我也不擅长数学。请帮我。我将其旋转90度。

我从OpenCV获得的第一张图片,然后是我想要获得的第二张图片。

关于, 哑巴

1 个答案:

答案 0 :(得分:0)

只需将坐标乘以旋转矩阵R(显然取决于角度)即可:

new_coords = R*old_coords

我认为它是OpenCV中的already implemented,但是您可以轻松地编写R by your self