【问题标题】:How to calculate top co-ordinates of a rectangle given the bottom ones using opncv?如何使用opencv计算给定底部坐标的矩形的顶部坐标?
【发布时间】:2019-07-26 02:02:58
【问题描述】:

我想在面部的某个区域绘制一个矩形,该矩形具有较低的 2 个坐标(左和右)。

现在我正在尝试计算将完成矩形的前 2 个坐标。我将高度作为要添加的 int 值。

如何将此高度添加到 2 个底部点? 说:

bottom_left = (x1, y1)
botoom_right = (x2, y2)

我想在上面的两点上加上 60 的高度。那么我该如何计算:

top_left = ?
top_right = ?

以便我可以使用:

cv2.rectangle(face, (bottom_left, top_left), (top_right, bottom_right), (255, 0, 0), 3)

【问题讨论】:

  • 我是否正确理解矩形不是(必然)轴对齐(即 y1 != y2)?
  • @DrewHall 底部坐标是两只眼睛,如果这能让你更好地理解的话。而且我的双眼需要60高。
  • 如果我理解你的问题,top_left=bottom_left-60; top_right=bottom_right-60。
  • rectangle 函数不绘制旋转的矩形。请注意这一点。

标签: python opencv image-processing


【解决方案1】:

以下内容如何:

h = 60
deltaX = x2 - x1
deltaY = y2 - y1
w = math.sqrt(deltaX**2 + deltaY**2)

dxHat = -deltaY / w
dyHat = deltaX / w

dx = h * dxHat
dy = h * dyHat

top_left = (x1 + dx, y1 + dy)
top_right = (x2 + dx, y2 + dy)

此版本通过显式使用 2D perp 操作(在 dxHat 和 dyHat 的计算中)纠正了我之前的(不正确的)基于 trig 的解决方案的偏斜。然后它按所需的 h 缩放以计算与原始点的偏移量。

【讨论】:

  • 感谢您的代码帮助我们继续前进。但是,它只给了我 below 的 2 点,而我希望它们位于顶部。我为 ref 添加了一个图像,蓝色和绿色是我在上面需要的点。
  • 试试 y1-dy 和 y2-dy。我忘记了 y 轴是自上而下的,而不是自下而上的。很高兴它对你有所帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2012-08-14
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多