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