OpenCV:合并合适的形状

问题描述 投票:1回答:1

如果我使用的是OpenCV(Python)并且适合两种形状,如下所示:

a = cv2.fitEllipse(contours)
b = cv2.minAreaRect(contours)

ab都表示为Box2D对象,它们看起来像:

center: (x, y)
size: (width, height)
rotation: angle

ab通常会非常相似,但由于不同的拟合方法而不准确。我怎样才能找到ab的“平均”形状(椭圆)?也就是说,ab之间最合适的椭圆?

python opencv computer-vision
1个回答
1
投票

“平均”的定义可能含糊不清,为您提供不同的解决方案。如果这对您来说无关紧要,因为您只想以任何方式平均形状,下面是如何平均两个矩形的简单解决方案:

表示两个矩形(a1, a2, a3, a4)(b1, b2, b3, b4)。让我们说我们想找到矩形(x1, x2, x3, x4)最小化

矩形参数化为

其中R是2D旋转矩阵,q_iwh未知矩形大小之一。 p是未知的矩形中心。

总体公式形成二次规划问题,未知数w, h, R, p和二次约束R是一个旋转矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.