Mentions légales du service

Skip to content
Snippets Groups Projects
soma_validation.py 1.57 KiB
Newer Older
import tkinter as tk

import numpy as np
from PIL import Image, ImageTk


array_t = np.ndarray


class soma_validation_window_t:
    def __init__(self, lmap: array_t, mip_axis: int = -1):
        """"""
        self.lmap = lmap
        self.mip = np.max(lmap, axis=mip_axis)
        mip_shape = self.mip.shape

        offset = 50
        scaling = (255.0 - offset) / np.max(self.mip)
        self.scaled_mip = scaling * self.mip + offset
        self.scaled_mip[self.mip == 0] = 0

        self.root = tk.Tk()
        self.canvas = tk.Canvas(
            self.root, width=mip_shape[1], height=mip_shape[0]
        )
        self.tk_image = ImageTk.PhotoImage(
            master=self.root, image=Image.fromarray(self.scaled_mip)
        )
        self.canvas_image = self.canvas.create_image(
            0, 0, anchor="nw", image=self.tk_image
        )

        self.canvas.bind("<Button-1>", self._DeleteSoma)

        self.canvas.pack()

    def LaunchInteraction(self) -> None:
        """"""
        self.root.mainloop()
        # scikit-image.relabel(self.lmap)

    def _DeleteSoma(self, event) -> None:
        """"""
        row = event.y
        col = event.x
        value = self.mip[row, col]

        if value > 0:
            self.lmap[self.lmap == value] = 0

            soma_bmap = self.mip == value
            self.mip[soma_bmap] = 0
            self.scaled_mip[soma_bmap] = 0
            self.tk_image = ImageTk.PhotoImage(
                master=self.root, image=Image.fromarray(self.scaled_mip)
            )
            self.canvas.itemconfig(self.canvas_image, image=self.tk_image)