Ошибка типа: объект ‘NoneType’ не может быть повторен, python opencv

#python #opencv

#python #opencv

Вопрос:

Я получаю сообщение об ошибке: строка 34, в drow_the_lines для строки в строках: ошибка типа: объект ‘NoneType’ не поддается повторению

Я не понимаю причину этой ошибки, пожалуйста, предложите, что может быть причиной этой ошибки

Вот мой полный код:

 import cv2
import numpy as np
def region_of_interest(img, vertices):
    mask = np.zeros_like(img)
    match_mask_color = 255
    cv2.fillPoly(mask, vertices, match_mask_color)
    masked_image = cv2.bitwise_and(img, mask)
    return masked_image

def drow_the_lines(img, lines):
    img = np.copy(img)
    blank_image = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
    #Drawing the lines
    for line in lines:
        for x1, y1, x2, y2 in line:
            cv2.line(blank_image, (x1, y1), (x2, y2), (0, 255, 0), thickness=3)
    img = cv2.addWeighted(img, 0.8, blank_image, 1, 0.0)
    return img

def process(image):
    print(image.shape)
    height = image.shape[0]
    width = image.shape[1]
    region_of_interest_vertices = [
        (0, height),
        (width/2, height/2),
        (width, height)
    ]

    #finding out the edges
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    canny_image = cv2.Canny(gray_image, 100, 200)
    cropped_image = region_of_interest(canny_image, np.array([region_of_interest_vertices], np.int32),)
    lines = cv2.HoughLinesP(cropped_image,
                            rho=6,
                            theta=np.pi/60,
                            threshold=160,
                            lines=np.array([]),
                            minLineLength=40,
                            maxLineGap=25)
    image_with_lines = drow_the_lines(image, lines)
    return image_with_lines

cap = cv2.VideoCapture('roadVideo.mp4')

while(cap.isOpened()):
    ret, frame = cap.read()
    frame = process(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) amp; 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

 

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

1. Можете ли вы предоставить информацию о содержимом lines после этого: lines = cv2.HoughLinesP(cropped_image, ... ?

Ответ №1:

Не могу ответить на ваш вопрос напрямую, но ошибка типа None означает, что он ничего не видит, например, строка, на которую он падает, не имеет ничего, на что смотреть. Итак, если мой подсчет верен, строка 34 равна:

 lines = cv2.HoughLinesP(cropped_image,
                            rho=6,
                            theta=np.pi/60,
                            threshold=160,
                            lines=np.array([]),
                            minLineLength=40,
                            maxLineGap=25)
 

Что, вероятно, означает, что cropped_image пуст?