#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 пуст?