Python将椭圆拟合为imag

2024-04-28 09:14:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用OpenCV的网络摄像头,我正在尝试实时拟合一个椭圆。

我目前使用的代码可以工作,但它在很多时候都无法将椭圆拟合到图像中。我还可以采用其他哪些椭圆拟合图像的方法?

当前代码:

def find_ellipses(img): #img is grayscale image of what I want to fit
        ret,thresh = cv2.threshold(img,127,255,0)
        _,contours,hierarchy = cv2.findContours(thresh, 1, 2)

        if len(contours) != 0:
            for cont in contours:
                if len(cont) < 5:
                    break
                elps = cv2.fitEllipse(cont)
                return elps  #only returns one ellipse for now
        return None

其中elps的形式为(x_centre,y_centre),(minor_axis,major_axis),angle

下面是一个例子,我想成功地拟合一个椭圆。当我不想使用此图像时,当前代码将失败。

enter image description here


Tags: 代码图像imgforlenreturnifcv2
2条回答

我会在函数之外定义我的轮廓,因为您不需要在这个图像中不断地重新定义它们。

def create_ellipse(thresh,cnt):
    ellipse = cv2.fitEllipse(cnt)
    thresh = cv2.ellipse(thresh,ellipse,(0,255,0),2)
    return thresh

这段代码所做的是我采取我的阈值图像流,并在它上面添加一个椭圆。稍后在我的代码中,当我想调用它时,我使用

thresh = create_ellipse(thresh,cnt)

结果我错了,只是从函数中得到了第一个椭圆。虽然我认为第一个计算出的椭圆是最正确的椭圆,但实际上我要做的是遍历所有的椭圆-并选择最合适的椭圆来限定图像中的对象。

相关问题 更多 >