def color_triangles(self, outline=None): self.rgb[:, :] = 255, 255, 255 im = Image.fromarray(self.rgb) draw = ImageDraw.Draw(im) cs_rgb = np.array(self.cluster_centers_lab) cs_rgb.shape = (1, len(cs_rgb), 3) cs_rgb = slic_funcs.lab2rgb(cs_rgb) for tri in self.tri: p0 = self.tripts[tri[0]] p1 = self.tripts[tri[1]] p2 = self.tripts[tri[2]] m = [(p0[0] + p1[0] + p2[0]) / 3, (p0[1] + p1[1] + p2[1]) / 3] mindist = 2147483647 nearest = -1 n = 0 for c in self.cluster_centers_xy: d = (m[0] - c[0]) * (m[0] - c[0]) + (m[1] - c[1]) * (m[1] - c[1]) if d < mindist: mindist = d nearest = n n += 1 col = cs_rgb[0, nearest, 0], cs_rgb[0, nearest, 1], cs_rgb[0, nearest, 2] draw.polygon(((p0[0], p0[1]), (p1[0], p1[1]), (p2[0], p2[1])), fill=col, outline=outline) del draw self.rgb = np.array(im) self._sync_lab_from_rgb()
def _sync_rgb_from_lab(self): self.rgb = slic_funcs.lab2rgb(self.lab)