#!/usr/bin/python # -*- coding: utf-8 -*- # \file MinTree.py # \brief TODO # \author Florent Guiotte # \version 0.1 # \date 10 oct. 2017 # # TODO details from ComponentTree import ComponentTree import cv2 from scipy.ndimage import label class MinTree(ComponentTree): def __init__(self, parent=None, data=None): super().__init__(parent, data) def construct(self, value=0): if self.component is None: # Then self is groot, set filter to true self.component = self.data != None # Donc, tout le monde à le même pointeur sur data. Ensuite il faut # utiliser component (agit comme un filtre) sur cette data pour # obtenir le réel CC. Donc appliquer le test de treshold sur cette # donnée, labéliser les cluster et créer des enfants itérativement filter = self.data * self.component > value labels_array, num_features = label(filter) for i in range(num_features): child = MinTree(self, self.data) child.component = labels_array == i + 1 child.construct(value + 1) self.children.append(child) def main(): img = cv2.imread('./img/lena.ppm', 0) t = MinTree(data=img) t.construct() print("Done") if __name__ == "__main__": main()