OpenCV 的 fitEllipse() 无法检测到明显椭圆的正确尺寸
OpenCV's fitEllipse() fails to detect obvious ellipse's correct dimensions
所以我知道 fitEllipse 有一些问题(参见 this question for example),但为什么它在这里完全找不到明显的椭圆尺寸?
我错过了什么吗?
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)
输入图像(8位二进制图像):
输出图像(RBG):
FindNonZero()
和 ellipse()
似乎工作正常 AFAICT。
问题出在 fitEllipse()
,打印结果显示它已关闭
print(ellipse) 的输出产生
((270.2370300292969, 174.11227416992188), (130.22764587402344, 216.85084533691406), 116.81776428222656)
根据文档(好的,OCV2.4 的文档,但我认为此函数的行为在 3.2 中没有改变),第 3 和第 4 个数字是旋转矩形的宽度和长度。但在这里,它们比实际需要的要小。
我正在使用 Python 2.7 和 OpenCV 3.2
fitEllipse
函数运行正常,但您输入错误。
您应该将椭圆的轮廓作为输入,而不是椭圆内的所有点。
您可以使用边缘检测算法轻松获得轮廓,例如cv2.Canny
所以我知道 fitEllipse 有一些问题(参见 this question for example),但为什么它在这里完全找不到明显的椭圆尺寸? 我错过了什么吗?
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)
输入图像(8位二进制图像):
输出图像(RBG):
FindNonZero()
和 ellipse()
似乎工作正常 AFAICT。
问题出在 fitEllipse()
,打印结果显示它已关闭
print(ellipse) 的输出产生
((270.2370300292969, 174.11227416992188), (130.22764587402344, 216.85084533691406), 116.81776428222656)
根据文档(好的,OCV2.4 的文档,但我认为此函数的行为在 3.2 中没有改变),第 3 和第 4 个数字是旋转矩形的宽度和长度。但在这里,它们比实际需要的要小。
我正在使用 Python 2.7 和 OpenCV 3.2
fitEllipse
函数运行正常,但您输入错误。
您应该将椭圆的轮廓作为输入,而不是椭圆内的所有点。
您可以使用边缘检测算法轻松获得轮廓,例如cv2.Canny