def calculate_area(mask: np.ndarray): """ Oblicza pole powierzchni bocznej obiektu. Rozmiar obiektu jest obliczny na podstawie ilosci pixeli obiektu. razy przelicznik pixele na metry. :param np.ndarray mask: Binarna maska obrazu. :return: Pole powierzchni bocznej karoserii pojazdu. :rtype: float """ # Znajdź kontury samochodu. contours = ContourDetector.find(mask) # Wyszkuaj kontur o największym polu. cnt = SizeMeasurment.__find_biggest_contour(contours) # Oblicz pole konturu. area = ContourDetector.area(cnt) ratio = Classyfication.get_ratio() area = round(area*ratio*ratio, 2) return area
def draw_car_contour(img, car, bin_mask): """ Rysuje kontur samochodu na obrazie. :param img: Obraz samochodu. :param car: Obiekt reprezentujący pojazd. :param bin_mask: Binarna maska obrazu. :return: Obraz z oznaczonym konturem samochodu. """ # Wyznacz rejon pojazdu na obrazie. x, y, w, h = car.get_coordinates() mask = bin_mask[y:y+h, x:x+w] image = img[y:y+h, x:x+w, :] # Znajdź kontury samochodu. contours = ContourDetector.find(mask) # Wyszkuaj kontur o największym polu. cnt = SizeMeasurment.__find_biggest_contour(contours) image = ContourDetector.draw(image, cnt, (255, 0, 0), thickness=2) img[y:y+h, x:x+w, :] = image return img