【问题标题】:Affine transform Android仿射变换安卓
【发布时间】:2013-11-17 21:08:01
【问题描述】:

我想在我的 Android 应用程序中使用 AffineTransform。 我的应用程序使用 openCV,我有两个 Rect(openCV 对象包含:x、y、width、height),每个 Rect 描述图像尺寸。 我想使用 AffineTransform 来查看一个图像如何与其他图像矩形(尺寸)一起呈现。 我的问题是我不知道如何将 Rect 转换为 3*3 Matrix,以便使用:

How to perform a similar operation as AffineTransform.transform on Android?

谢谢 大卫

【问题讨论】:

  • 您不能将 Rect 转换为 Matrix,但是您可以基于两个 Rect 计算 Matrix
  • 谢谢。你有示例代码吗?
  • Matrix.setRectToRect()

标签: android opencv


【解决方案1】:

如果您只需要将图像从一种尺寸转换为另一种尺寸,仿射变换就真的是大材小用了。使用resize函数会简单很多。

编辑(第一条评论): 抱歉,我以为您正在尝试转换图像,而不是几何数据。无论如何,在您的情况下,您不需要完全仿射变换。您只需要缩放 x 和缩放 y。适当的变换矩阵将是:

(sx, 0, 0)

(0, sy, 0)

(0, 0, 1)

编辑(第二条评论):

sx = (double)rect1.width/rect2.width;
sy = (double)rect1.height/rect2.height;
double m[9] = {sx, 0, 0, 0, sy, 0, 0, 0, 1};
Mat transf(3, 3, CV_64F, m);

【讨论】:

  • 我想知道一张图像的某些点如何放置在不同尺寸的图像上,因此调整图像大小在这里没有帮助。
  • 谢谢,如果我只有 Rect 并且需要将其转换为 3*3,您知道如何获得这些积分吗?
  • 嗨,什么是 Mat transf(3, 3, CV_64F, m);是安卓方法吗?开放CV?
  • OpenCV - 是的。安卓 - 没有。我正在使用 C++,但我不知道它在 Android 上应该是什么样子。我想它应该非常相似。反正我觉得总比没有好...
  • 当然,谢谢,我会寻找转换为 Android
猜你喜欢
  • 2010-12-17
  • 2013-07-04
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多