Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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