Подсчет транспортных средств на основе классификации транспортных средств

В настоящее время я занимаюсь обнаружением транспортных средств, классификацией и подсчетом количества экземпляров каждого класса для моей дипломной работы. Но у меня проблема со счетом. Я хочу подсчитать количество транспортных средств на основе результатов классификации (например, "Общее количество автомобилей" и "Общее количество грузовиков").

В настоящее время я использую пример кода отсюда https://github.com/AlfaCodeFlow/Vehicle_Detection-And-Classification.
В этом примере автор подсчитывает общее количество автомобилей в зависимости от направления их движения ("ВВЕРХ" или "ВНИЗ"), как на этом примере изображения.

Что мне нужно, так это изменить этот код таким образом, чтобы он подсчитывал и отображал общее количество грузовиков и общее количество автомобилей вместо общего количества транспортных средств, движущихся вверх или вниз. Не могли бы вы мне помочь?

Вот код для этой задачи, где мне нужно внести изменения:

cnt_up=0
cnt_down=0

line_up=400
line_down=250

up_limit=230
down_limit=int(4.5*(500/5))

new=True
if cy in range(up_limit,down_limit):
    for i in cars:
        if abs(x - i.getX()) <= w and abs(y - i.getY()) <= h:
           new = False
           i.updateCoords(cx, cy)
           
#Counter that i need to change from upward and downward to classification (Truck & Car)
           if i.going_UP(line_down,line_up)==True:
               cnt_up+=1

           elif i.going_DOWN(line_down,line_up)==True:
                cnt_down+=1
           break
        if i.getState()=='1':
            if i.getDir()=='down'and i.getY()>down_limit:
                i.setDone()
            elif i.getDir()=='up'and i.getY()<up_limit:
                i.setDone()

#This is for Classification
        for i in cars:
            cv2.putText(frame, str(i.getId()), (i.getX(), i.getY()), font, 0.3, (255,255,0), 1, cv2.LINE_AA)
            if line_down+20<= i.getY() <= line_up-20:
               a = (h + (.74*w)- 100)

               if a >= 0:
                     cv2.putText(frame, "Truck", (i.getX(), i.getY()), font, 1, (0,0,255), 2, cv2.LINE_AA)
               else:
                     cv2.putText(frame, "Car", (i.getX(), i.getY()), font, 1, (0,0,255), 2, cv2.LINE_AA)

#To render in frame
        str_up='UP: '+str(cnt_up)
        str_down='DOWN: '+str(cnt_down)
        frame=cv2.line(frame,(0,line_up),(900,line_up),(0,0,255),3,8)
        frame=cv2.line(frame,(0,up_limit),(900,up_limit),(0,0,0),1,8)

        frame=cv2.line(frame,(0,down_limit),(900,down_limit),(255,255,0),1,8)
        frame=cv2.line(frame, (0, line_down), (900, line_down), (255, 0,0), 3, 8)

        cv2.putText(frame, str_up, (10, 40), font, 0.5, (0, 0, 255), 1, cv2.LINE_AA)
        cv2.putText(frame, str_down, (10, 90), font, 0.5, (255, 0, 0), 1, cv2.LINE_AA)
        cv2.imshow('Frame',frame)

0 ответов

Другие вопросы по тегам