У меня есть школьный проект, в котором я должен сделать линию, следующую за машиной, которая должна следовать определенной цветовой линии в зависимости от ввода пользователя. Код работает нормально, когда я тестирую возможности отслеживания линии автомобиля одним цветом и без ввода пользователя, но когда я добавляю несколько цветов и ввод пользователя, автомобиль больше не хочет следовать по линии и просто уезжает в закат. Я попытался поэкспериментировать с кодом, но не повезло. Это цикл while кода.
try:
while(True):
user = int(input("1 for blue line"))
time.sleep(1)
ret, frame = cap.read()
crop_img = frame[60:120, 0:160]
_, img = cap.read()
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Tracking blue color
if user == 1:
blue_lower = np.array([99,115,150],np.uint8)
blue_upper = np.array([110,255,255],np.uint8)
blue = cv2.inRange(hsv, blue_lower, blue_upper)
kernal = np.ones((5 ,5), "uint8")
blue=cv2.dilate(blue,kernal)
res=cv2.bitwise_and(img, img, mask = blue)
(contours,hierarchy)=cv2.findContours(blue,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for pic, contour in enumerate(contours):
area = cv2.contourArea(contour)
if(area>300):
x,y,w,h = cv2.boundingRect(contour)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
Controls()
# Tracking black color
else:
black_lower = np.array([0,0,0],np.uint8)
black_upper = np.array([50,50,100],np.uint8)
black = cv2.inRange(hsv, black_lower, black_upper)
kernal = np.ones((5 ,5), "uint8")
black = cv2.dilate(black,kernal)
res2 = cv2.bitwise_and(img, img, mask = black)
(contours,hierarchy)=cv2.findContours(black,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for pic, contour in enumerate(contours):
area = cv2.contourArea(contour)
if(area>300):
x,y,w,h = cv2.boundingRect(contour)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
Controls()