Preview:
import os
import cv2
import numpy as np
from typing import Tuple

# Definicja kolorów i etykiet
CLASS_COLORS = {
    0: {'color_rgb': (0, 0, 0), 'label': 'background'},
    1: {'color_rgb': (255, 0, 0), 'label': 'chondroosseous border'},
    2: {'color_rgb': (0, 255, 0), 'label': 'femoral head'},
    3: {'color_rgb': (0, 0, 255), 'label': 'labrum'},
    4: {'color_rgb': (255, 255, 0), 'label': 'cartilagineous roof'},
    5: {'color_rgb': (0, 255, 255), 'label': 'bony roof'},
    6: {'color_rgb': (159, 2, 250), 'label': 'bony rim'},
    7: {'color_rgb': (255, 132, 0), 'label': 'lower limb'},
    8: {'color_rgb': (255, 0, 255), 'label': 'baseline'},
    9: {'color_rgb': (66, 135, 245), 'label': 'lower limb template'},
    10: {'color_rgb': (255, 69, 0), 'label': 'lower limb - alg. v3'}
}


def visualize_masks(input_dir, output_dir):
    # Tworzenie katalogu wyjściowego, jeśli nie istnieje
    os.makedirs(output_dir, exist_ok=True)

    # Iteracja po plikach PNG w katalogu wejściowym
    for filename in os.listdir(input_dir):
        if filename.endswith(".png"):
            # Wczytywanie maski
            mask_path = os.path.join(input_dir, filename)
            mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)

            # Tworzenie pustego obrazu RGB o tych samych wymiarach co maska
            color_image = np.zeros((mask.shape[0], mask.shape[1], 3), dtype=np.uint8)

            # Zamiana etykiet na kolory RGB zgodnie z CLASS_COLORS
            for class_id, color_info in CLASS_COLORS.items():
                color_rgb = color_info['color_rgb']
                color_image[mask == class_id] = color_rgb

            # Znajdowanie punktów baseline
            right_point, left_point = find_baseline(mask)
            
            # Rysowanie baseline na obrazie, jeżeli punkty istnieją
            if right_point[0] is not None and left_point[0] is not None:
                cv2.line(color_image, right_point, left_point, (255, 255, 255), 1)

            # Zapisanie obrazu kolorowego do katalogu wyjściowego
            output_path = os.path.join(output_dir, filename)
            cv2.imwrite(output_path, color_image)
            print(f"Maska {filename} została zapisana w katalogu wyjściowym.")

# Przykładowe użycie
input_dir = "./Angles/dane/ta_jedna"
output_dir = "./Angles/dane/wizul"
visualize_masks(input_dir, output_dir)
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter