【问题标题】:Android Opencv calculate size of rotated image inside rectangleAndroid Opencv计算矩形内旋转图像的大小
【发布时间】:2014-06-18 04:56:27
【问题描述】:

我想计算旋转后的图像大小,图像在矩形内。我有旋转图像的矩形宽度、高度和角度。有谁告诉我 如何计算旋转后的图片大小?

【问题讨论】:

  • 为了澄清,你有蓝色矩形的 h、w 和 theta(如图所示)。你想计算蓝色矩形的面积吗?我一定错过了什么,因为它本身不是一个问题:P
  • @PervezAlam 我有外部矩形宽度、高度,现在我想要内部旋转图像大小。
  • h x sin(θ) + w x cos(θ) = bh; h x cos(θ) + w x sin(θ) = bw;正如你所说的 θ 是已知的,你可以为 2 个变量 h、w 求解上述两个方程。
  • 我们可以得到外部矩形的大小,但不能得到旋转图像的大小。
  • 如果你求解上述方程的 h, w;它也会给你内部矩形的尺寸。如果您发现任何困难,请告诉我。

标签: android opencv math


【解决方案1】:

所以你有宽度、高度和角度意味着你已经得到了RotatedRect

现在使用方法

Rect RotatedRect::boundingRect();

您可以轻松计算旋转矩形的边界框。

更多信息请见RotatedRect

编辑:

根据您的评论,下面是如何找到旋转矩形的宽度和高度的方法。

所以你知道矩形的四个角,比如说 (x1,y1),(x2,y2),(x3,y3),(x4,y4),现在你需要找到旋转后的变换点给定角度,让它成为 (xT1,yT1),(xT2,yT2),etc...

在哪里

xT = x0+(x-x0)*cos(theta)+(y-y0)*sin(theta)
yT = y0-(x-x0)*sin(theta)+(y-y0)*cos(theta)

这里 (x0,y0) 是您旋转的中心。和theta = angle * CV_PI / 180.0

利用上面计算四个变换点,最后通过变换点之间的距离来计算高度和宽度。

【讨论】:

  • 我有外部矩形宽度、高度,现在我想要内部旋转图像大小。
  • 好吧,我误解了你的问题,我以为所有的数据都是旋转的矩形,你需要找到边界矩形。
  • 我总是得到宽度,旋转图像的高度大于外部矩形。如果我没有记错我旋转后的图像宽度,高度必须小于外部矩形。
  • 我现在使用这个公式在使用你的公式得到所有点后得到宽度高度。所以使用这个链接,我得到了与外部矩形相同的宽度和高度。 [上午 10 点 51 分 47 秒] Farrakh Javed:mathopenref.com/coordrectangle.html
猜你喜欢
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2014-12-23
相关资源
最近更新 更多