【发布时间】:2012-10-21 03:05:11
【问题描述】:
我正在尝试对通过相机捕获的位图进行透视变换。用户调整矩形对象周围的边界四边形(如白框所示)。然后我尝试使用以下代码将其转换为矩形图像:
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
输出:
【问题讨论】:
-
您找到解决方案了吗?我有同样的问题。
-
@romain-guy 也许你有这个问题的提示?
标签: android image matrix bitmap transform