gpt4 book ai didi

python - 使用具有不同参数的 cv2.ellipse 时椭圆拟合异常?

转载 作者:太空狗 更新时间:2023-10-30 02:44:00 25 4
gpt4 key购买 nike

我在 Windows 8.1 上使用 OpenCV 2.4.11 和 Python 2.7.9。我试图将椭圆拟合到我的轮廓上,但我遇到了一些我无法弄清楚的事情。

当我调用 cv2.fitEllipse 并获取返回值,然后使用以下代码将返回值直接传递给 cv2.ellipse 时,绘制到屏幕上的椭圆非常完美,并且最适合我的轮廓:

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)

上面的结果是

enter image description here

但是,当我尝试解析实际的椭圆参数并通过传入这些参数手动绘制椭圆时(请参阅下面的代码),它会创建一个“臃肿”版本的椭圆,使自己看起来非常舒服(但很烦人)轮廓周围的空间括号,如下所示:

contours, hierarchy = cv2.findContours(binaryimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)

for ind, cont in enumerate(contours):
(x,y),(MA,ma),angle = cv2.fitEllipse(cont)
#feed the parsed parameters into cv2.ellipse
cv2.ellipse(displayframe,(x,y),(MA, ma),angle,0,360,(0,0,255))

cv2.imshow("Ellipses NOT fitting the contours properly",displayframe)

这种恼人现象的结果是:

enter image description here

是的,我知道使用第一种方法可以解决绘制正确椭圆的问题。但我想知道它为什么这样做,因为实际上,我需要椭圆的参数来进行一些 blob 跟踪,如果解析的参数最终给出了这样的不合适的椭圆,真的吗?准确的? cv2.ellipse() 绘图函数有问题吗?关于出了什么问题的任何想法?来自 cv2.fitEllipse 函数的椭圆参数是否准确?

最佳答案

您正在绘制返回的边界框的宽度和高度。您应该绘制一半宽度和高度,因为椭圆的轴将是其边界框宽度和高度的一半

cv2.ellipse(displayframe,(x,y),(MA/2, ma/2),angle,0,360,(0,0,255))

关于python - 使用具有不同参数的 cv2.ellipse 时椭圆拟合异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31281235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com