OpenCV的fitEllipse()无法检测到明显椭圆的正确尺寸

时间:2017-04-10 13:40:04

标签: python opencv ellipse

所以我知道fitEllipse有一些不幸事件(见this question for example),但为什么这里完全无法找到明显的椭圆尺寸? 我错过了什么吗?

ul

输入图像(8位二进制图像):enter image description here

输出图像(RBG):
enter image description here

import numpy as np import cv2 img=cv2.imread(my_input_image,0) #this will be the result image where I'll draw the found ellipse in red img_res=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) nzs=cv2.findNonZero(img) #calling fitEllipse on the non zeros ellipse=cv2.fitEllipse(nzs) #drawing the found ellipse img_res=cv2.ellipse(img_res,ellipse,(0,0,255),thickness=3) FindNonZero()似乎工作正常AFAICT 问题出在ellipse(),打印结果显示它已关闭 打印输出(椭圆)产生

  

((270.2370300292969,174.11227416992188),(130.22764587402344,216.85084533691406),116.81776428222656)

根据文档(好的,OCV2.4的文档,但我认为这个函数的行为在3.2中没有改变),第3和第4个数字是旋转矩形的宽度和长度。但在这里,它们比实际需要的要小。

我正在使用Python 2.7和OpenCV 3.2

1 个答案:

答案 0 :(得分:1)

fitEllipse函数可以正常工作,但是您输错了。

您应该输入椭圆的轮廓,而不是椭圆内的所有点。

您可以使用边缘检测算法轻松获取轮廓,例如cv2.Canny