Android Opencv Perspective Transformation未按预期工作

时间:2016-09-17 11:10:24

标签: android opencv

我正在使用opencv中的透视转换为Android个人项目。
我想做的是获取像CamScanner那样的文档。 为此,我导入一张图片,让用户设置所需的四个转换点。一切都有效,除了变换似乎适用于不同的点或类似的事实。我需要一些新鲜的眼睛指向正确的方向。
请注意public class MainActivity extends ListActivity { } 是一个自定义类,在此上下文中它唯一有趣的属性是它们是带有myHandlex坐标以及y和{{的点1}}是坐标的吸气剂 这是我的转型功能:

getX()

一些示例截图: User determined the points
用户确定了积分 Transformation is not as expected
转型不符合预期

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我没有将触摸坐标映射到图像坐标,它们是不同的 这是用于定义正确尺寸的更新和工作代码:

for (myHandle ball : sourcePoints) {

            srcPts.add(new Point((ball.getX()*image.getWidth() / screenWidth),ball.getY()*image.getHeight()/screenHeight));
        }

        double dst_width = Math.max(distance(srcPts.get(0),srcPts.get(1)),
                distance(srcPts.get(2),srcPts.get(3)));

        double dst_height = Math.max(distance(srcPts.get(0),srcPts.get(3)),
                distance(srcPts.get(1),srcPts.get(2)));

distance的位置:

private double distance(Point p1, Point p2){
    return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));
}