我正在尝试对通过相机捕获的位图进行透视变换。用户调整矩形对象周围的边界四边形(如白框所示)。然后我尝试使用以下代码将其转换为矩形图像:
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);
}
但是,我生成的图像包含在我的四边形边界之外的图像数据。如果我能弄清楚变换后四边形的坐标是什么,这将是可以接受的,这样我就可以裁剪结果,但我完全不知道该怎么做。
无论是在转换后找到四边形的坐标,还是理想地找到一种方法来防止这种情况首先发生,任何帮助都将不胜感激。
输入:
http://i.stack.imgur.com/33RfN.png
输出: