我在Windows8.1上使用OpenCV2.4.11和Python2.7.9。我试着把椭圆画在我的轮廓上,我遇到了一些我无法理解的东西。在
当我调用cv2.fitEllipse并获得返回值,然后用下面的代码将返回值直接传递到cv2.elliple中时,屏幕上绘制的椭圆非常完美,并使我的轮廓线最佳拟合:contours, hierarchy = cv2.findContours(binaryimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
for ind, cont in enumerate(contours):
elps = cv2.fitEllipse(cont)
#Feed elps directly into cv2.ellipse
cv2.ellipse(displayframe,elps,(0,0,255))
cv2.imshow("Perfectly fitted ellipses", displayframe)
以上结果为
但是,当我试图解析实际的椭圆参数并通过传入这些参数手动绘制椭圆时(参见下面的代码),它会创建椭圆的“膨胀”版本,在轮廓周围给自己一个非常舒适(但又令人讨厌)的空间支架,如下所示:
^{pr2}$
这种恼人现象的结果是:
是的,我知道使用第一种方法可以解决绘制正确椭圆的问题。但我想知道它为什么要这样做,因为实际上,我需要椭圆的参数来做一些斑点跟踪,如果被解析的参数最终给出了像那样宽的不匹配的椭圆,它真的准确吗?cv2.elliple()绘图函数有问题吗?有什么问题吗?cv2.fitEllipse函数中的椭圆参数是否准确?在