Preview:
import os
import time
import cv2
from baseline import find_baseline
from lower_limb_sensitivity import verify_lower_limb_sensitivity
from class_small_areas import verify_class_small_areas
from bony_roof_length import verify_bony_roof_length
from baseline_horizontality import verify_baseline_horizontality

masks_dir = "./app/angle_utils/masks"
output_file = "./app/scoring_utils/scoring_time.csv"
max_masks = 100


def time_function(func, *args):
    """Pomiar czasu działania funkcji."""
    start_time = time.time()
    try:
        result = func(*args)
    except Exception as e:
        print(f"Error in {func.__name__}: {e}")
        result = None
    end_time = time.time()
    return end_time - start_time, result


# Wyniki pomiarów
results = {
    "verify_lower_limb_sensitivity": [],
    "verify_class_small_areas": [],
    "verify_bony_roof_length": [],
    "verify_baseline_horizontality": []
}

# Pobranie plików masek
mask_files = [f for f in os.listdir(masks_dir) if f.endswith(".png")]

for i, mask_file in enumerate(mask_files[:max_masks]):
    mask_path = os.path.join(masks_dir, mask_file)
    mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)

    if mask is None:
        print(f"Unable to read mask {mask_file}")
        continue

    print(f"Processing {i+1}/{min(len(mask_files), max_masks)}: {mask_file}")

    # Najpierw obliczenie punktów baseline
    baseline_time, baseline_points = time_function(find_baseline, mask)
    if baseline_points is None or len(baseline_points) != 2:
        print(f"Skipping {mask_file} due to invalid baseline points")
        continue

    # Czas dla funkcji verify_lower_limb_sensitivity
    sensitivity_time, _ = time_function(verify_lower_limb_sensitivity, mask, baseline_points)
    results["verify_lower_limb_sensitivity"].append(sensitivity_time)

    # Czas dla funkcji verify_class_small_areas
    class_small_areas_time, _ = time_function(verify_class_small_areas, mask)
    results["verify_class_small_areas"].append(class_small_areas_time)

    # Czas dla funkcji verify_bony_roof_length
    bony_roof_time, _ = time_function(verify_bony_roof_length, mask)
    results["verify_bony_roof_length"].append(bony_roof_time)

    # Czas dla funkcji verify_baseline_horizontality
    horizontality_time, _ = time_function(verify_baseline_horizontality, baseline_points)
    results["verify_baseline_horizontality"].append(horizontality_time)

# Zapis wyników do pliku CSV
with open(output_file, "w") as f:
    f.write("Function,Average Time (s),Max Time (s),Min Time (s)\n")

    for func_name, times in results.items():
        avg_time = sum(times) / len(times) if times else 0
        max_time = max(times) if times else 0
        min_time = min(times) if times else 0
        f.write(f"{func_name},{avg_time},{max_time},{min_time}\n")

print(f"Timing results saved to {output_file}")
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