opencv“列表索引超出范围”

2024-09-30 00:34:29 发布

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

我试着只在轮廓上画圆,这是最接近的中心位置帧(192108),我得到错误“列表索引超出范围”

    X = []
    Y = []
    Z = []
    distance = 0
    contours, _ = cv2.findContours(eroded, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    for contour in contours:
        area = cv2.contourArea(contour)
        if area > 500:
            M = cv2.moments(contour)
            if M["m00"] != 0.0: 
                cX = int(M["m10"] / M["m00"])
                cY = int(M["m01"] / M["m00"])
                X.append(cX)
                print(X)
                Y.append(cY)
                lenghtx = len(X)
                for x in range(lenghtx):
                    distance = math.sqrt( ((192-X[x])**2)+((108-Y[x])**2) )
                    Z.append(distance)
                    #print(distance)
                #print(lenghtx)
                #print (min (Z),'min' )
                minimum = min(Z)
                minindex = Z.index(min(Z))
                print(minindex)
            cv2.circle(frame, (X[minindex], Y[minindex]), 5, (0, 255, 0), -1)
            cv2.drawContours(frame, contours, -1, (0, 0, 255), 2)

我试着打印X坐标的列表和minindex的值,得到了这样的结果

[166] - list of X
0 - minindex
[166,92,112] - list of X
5 - minindex

首先是好的,但当有更多的轮廓在帧(更多的坐标),minindex值不是我所期望的,所以一定有一些问题,我的名单,但我不知道在哪里


Tags: in列表forareamincv2轮廓distance

热门问题