我正在尝试对通过相机捕获的位图进行透视变换.用户围绕矩形对象调整边界四边形(如白框所示).然后,我尝试使用以下代码将其转换为矩形图像:
public static Bitmap perspectiveTransformation(Bitmap bitmap,BoundingQuad boundingQuad)
{
Matrix matrix = new Matrix();
float[] dst = new float[] {
0,
0,
bitmap.getWidth(),
0,
bitmap.getWidth(),
bitmap.getHeight(),
0,
bitmap.getHeight()
};
float[] src = new float[] {
boundingQuad.topLeft.x,
boundingQuad.topLeft.y,
boundingQuad.topRight.x,
boundingQuad.topRight.y,
boundingQuad.bottomRight.x,
boundingQuad.bottomRight.y,
boundingQuad.bottomLeft.x,
boundingQuad.bottomLeft.y
};
matrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1);
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}
Run Code Online (Sandbox Code Playgroud)
但是,我生成的图像包含超出我的四边形边界的图像数据.如果我可以弄清楚变换后四边形的坐标是什么,这是可以接受的,所以我可以裁剪结果,但我完全不知道如何做到这一点.
在转换后找到四边形的坐标或理想地找到防止这种情况首先发生的方法时,将非常感谢任何帮助.
输入:
http://i.stack.imgur.com/33RfN.png
输出: