opencv "индекс списка вне диапазона" - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь нарисовать круг только по контуру, который находится ближе всего к центральной позиции кадра (192,108), и я получаю ошибку «индекс списка вне диапазона»

    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 не соответствует ожиданиямтак что должна быть какая-то проблема с моими списками, но я не знаю, где

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...