(tiles, slide, level, line_width_pix=1, extra_tiles=None)
| 320 | return rects |
| 321 | |
| 322 | def make_tile_QC_fig(tiles, slide, level, line_width_pix=1, extra_tiles=None): |
| 323 | # Render the tiles on an image derived from the specified zoom level |
| 324 | img = slide.read_region((0, 0), level, slide.level_dimensions[level]) |
| 325 | downsample = 1 / slide.level_downsamples[level] |
| 326 | |
| 327 | draw = ImageDraw.Draw(img, "RGBA") |
| 328 | for tile in tiles: |
| 329 | bbox = tuple(np.array(tile.bounds) * downsample) |
| 330 | draw.rectangle(bbox, outline="lightgreen", width=line_width_pix) |
| 331 | |
| 332 | # allow to display other tiles, such as excluded or sampled |
| 333 | if extra_tiles: |
| 334 | for tile in extra_tiles: |
| 335 | bbox = tuple(np.array(tile.bounds) * downsample) |
| 336 | draw.rectangle(bbox, outline="blue", width=line_width_pix + 1) |
| 337 | |
| 338 | return img |
| 339 | |
| 340 | def create_tissue_mask(wsi, seg_level, method='otsu'): |
| 341 | # Determine the best level to determine the segmentation on |
no outgoing calls
no test coverage detected