Ошибка типа: объект ‘NoneType’ не поддается повторению, обнаружение границ OpenCV

#python #opencv #lambda #color-detection

#python #opencv #лямбда #обнаружение цвета

Вопрос:

Я знаю, что здесь много вопросов об ошибке этого типа: TypeError: объект ‘NoneType’ не поддается повторению, но я не смог найти ответ, который помог мне. Я делаю обнаружение доски для тетриса, следуя тексту и видео с этого сайта:https://pysource.com/2019/12/07/detect-tetris-board-and-tetrominoes-python-plays-tetris-p-3 /. Но когда я пытаюсь запустить свой код, я получаю ошибку, и я понятия не имею, как это исправить / что вообще не так. Это мой код:

 import numpy as np
import argparse
import cv2
import sys



image = cv2.imread("tetris.png")

boundaries = (164, 120, 104)
boundaries1 = (166, 122, 106)

for (boundaries) in boundaries:
    lower = np.array(boundaries, dtype = "uint8")
    upper = np.array(boundaries1, dtype = "uint8")

    board_mask = cv2.inRange(image, lower, upper)
    output = cv2.bitwise_and(image, image, mask = board_mask)

    _, contours = cv2.findContours(board_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    contours = sorted(contours, key=lambda x: cv2.contourArea(x), reverse=True)
        
    cnt = contours[0]
    (board_x, board_y, board_w, board_h) = cv2.boundingRect(cnt)
    cv2.drawContours(img, [cnt], -1, (0, 255, 0), 3)
    cv2.drawContours(virtual_board, [cnt], -1, (0, 255, 0), 3)
  

и это ошибка:

 Traceback (most recent call last):
  File "C:Users-my.user-Desktopdetection.py", line 21, in <module>
    contours = sorted(contours, key=lambda x: cv2.contourArea(x), reverse=True)
TypeError: 'NoneType' object is not iterable
  

пожалуйста, помогите мне, что не так и как мне это исправить?

Комментарии:

1. проверьте значение для contours , чтобы увидеть, равно ли оно None.

2. это, что мне тогда делать??

3. вы уверены, что этого не должно быть contours, _ = cvs.findContours(...) Я ничего не знаю о cv2, но из docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html похоже, что вы поменяли позиции..

4. если я это сделаю, я получу эту ошибку вместо:

5. Traceback (most recent call last): File "C:Usershampus.ramstenDesktopdetection.py", line 24, in <module> cnt = contours[0] IndexError: list index out of range