如何找到使用cv.fitEllipse(contour)获得的椭圆区域?

时间:2016-04-08 12:21:56

标签: python opencv

我使用ellipse = cv2.fitEllipse(cnt)获取椭圆。

它返回3个元素的元组,但我无法找到任何描述的元素。我想找到获得的椭圆的面积。我该怎么做。

谢谢!

3 个答案:

答案 0 :(得分:4)

fitEllipse返回一个由三个元素组成的元组(如你所说),它定义了椭圆的边界框。我将使用以下行来引用这些元素:

(x, y), (MA, ma), angle = cv2.fitEllipse(cnt)

这里唯一相关的信息是(MA, ma),它按顺序包含长轴和短轴的长度。椭圆的面积简单地是长轴和短轴的乘积。 (因此位置和旋转无关。)因此,您将使用

计算此椭圆的面积
A = PI * MA * ma

答案 1 :(得分:2)

函数cv2.fitEllipse(.)返回RotatedRect的元素,它是覆盖椭圆的最小边界矩形。

要查找区域,您可以获取边界矩形的区域,也可以直接从椭圆的轮廓contourArea

获取

答案 2 :(得分:0)

您可以使用ellipse = cv2.fitEllipse(cnt)

的返回元素进行计算
  Double  H = ellipse.size.height;
  Double  W = ellipse.size.weight;
  Double ellipse_area = CV_PI * (H/2.0) * (W/2.0) 

对于最大和最小半径,将H和W除以2.0