1 minute read

Python : exporter des ROI en images publication

Objectif

À la fin, vous aurez reproduit cette étape de bout en bout sur un cas test.

Avant de commencer

  • Python 3.10+ et environnement virtuel.
  • Dépendances installées pour le script de l’article.
  • Un dossier entrée/sortie clairement séparé.

Pas à pas

  1. Lire la ROI (polygone) depuis un GeoJSON.
  2. Extraire la bounding box dans la lame WSI.
  3. Appliquer un masque polygone pour ne garder que la ROI.
  4. Exporter en PNG/TIFF haute qualité.
  5. Conserver nommage incluant ID ROI.

À copier-coller

import json
import openslide
import numpy as np
from PIL import Image, ImageDraw

slide = openslide.OpenSlide('sample.svs')
with open('roi.geojson', 'r', encoding='utf-8') as f:
    poly = json.load(f)['features'][0]['geometry']['coordinates'][0]

xs = [p[0] for p in poly]; ys = [p[1] for p in poly]
minx, miny, maxx, maxy = map(int, (min(xs), min(ys), max(xs), max(ys)))
img = slide.read_region((minx, miny), 0, (maxx-minx, maxy-miny)).convert('RGB')
mask = Image.new('L', img.size, 0)
pts = [(x-minx, y-miny) for x, y in poly]
ImageDraw.Draw(mask).polygon(pts, fill=255)
out = Image.new('RGB', img.size)
out.paste(img, mask=mask)
out.save('roi_export.png')

Vérifier que ça marche

  • Le script s’exécute sans exception.
  • Les fichiers de sortie sont bien créés.
  • Le résultat est cohérent sur un petit lot test.

En cas de problème

  • Relancer dans un environnement virtuel propre.
  • Vérifier chemins d’entrée/sortie et permissions.

Documentation officielle

Articles liés