Python : exporter des ROI en images publication
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
- Lire la ROI (polygone) depuis un GeoJSON.
- Extraire la bounding box dans la lame WSI.
- Appliquer un masque polygone pour ne garder que la ROI.
- Exporter en PNG/TIFF haute qualité.
- 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.