s = Slic(fn) # Jetzt der Befehl zum Segmentieren # Parameter: 1.: Anzahl der Segmente, 2.: Kanten-Sensitivität, # 3.: Seitenverhältnis der Segmente (hat nicht viel Enfluss, # würde ich immer bei 1 lassen) s.segment(300, 5, 1) # das hier zeichnet die Segmentgrenzen ein s.mark_border() # und das die Dreiecke, die Zahl in der Klammer ist die Anzahl der Dreiecke # in der Zeile unten drunter ist ein Befehl auskommentiert. Wenn du die # # löschst und die obere Zeile auskommentierst (also ne # davor setzt), # werden die Dreiecke geordnet verteilt... s.draw_triangles_random(10000) #s.draw_triangles_gridded(10000) # und zum Schluss noch Speichern. Mit der unten stehenden Einstellung # wird die Ausgabe in eine Datei mit gleichem Namen nur mit '_slic' am Ende in den # gleichen Ordner der ursprungsdatei geschrieben. # Kannst das, was in den Klammern steht auch # löschen und stattdessen nen Pfad + Dateinamen selbst reinschreiben. # (Also z.B.: s.save('/Users/deinbenutzerordner/sonstirgendweinname.jpg')) s.save() # Es gibt noch ein paar mehr Befehle, die du aber wahrscheinlich weniger # brauchen wirst. Wenn du nach der Zeile mit s.segment(...) noch eine Zeile # einfügst mit s.make_mean() werden die Segmente auf Durchschnittsfarbe gesetzt. # Das kennst du ja schon... Kann man z.B. alternativ
Created on Sun Jan 31 20:24:44 2016 @author: Hagen """ from numcl import _ctrl #_ctrl.device_cpu() from slic import Slic import timeit segruns = 1 colors = ((210,210,255), (230,230,255), (230,230,255), (200,200,200), (10,10,10), (250,250,250), (50,50,50), (100,100,150)) fn = '/Users/Hagen/Desktop/Blumen.png' test = Slic(fn) t = 0. for i in range(segruns): t0 = timeit.default_timer() test.segment(1000, 1) t1 = timeit.default_timer() t += t1 - t0 print t1 - t0 print t/segruns #test.mark_border() test.make_mean() test.colorize(colors) #test.show() test.save()
class SlicApp(App): slic = ObjectProperty(None) img_loaded = ObjectProperty(False) img_segmented = ObjectProperty(False) title = 'Image SLIC 0.1' def open_click(self): self.root.ids.display.clear_widgets() self.root.ids.display.add_widget(LoadDialog()) def save_click(self): self.root.ids.display.clear_widgets() self.root.ids.display.add_widget(SaveDialog()) def cancel(self): self.root.ids.display.clear_widgets() if not (self.slic == None): img = Image(source=self.slic.filename) img.id = 'disp_img' self.root.ids.display.add_widget(img) self.img_loaded = True def load(self, path, selection): if not selection[0] == '': self.slic = Slic(selection[0]) self.root.ids.display.clear_widgets() img = Image(source=selection[0]) img.id = 'disp_img' self.root.ids.display.add_widget(img) self.img_loaded = True def save(self, path, filename): self.slic.save(fn=path + '/' + filename) def segment(self, num_seg, comp): if self.slic == None: print 'No image loaded.' return self.slic.reload_orig() self.t = Thread(target=self.do_seg, args=(int(num_seg), int(comp))) self.t.start() def do_seg(self, num_seg, comp): self.slic.reload_orig() self.slic.segment(int(num_seg), int(comp)) self.img_segmented = True Clock.schedule_once(self.update_canvas) @mainthread def update_canvas(self, *args): self.root.ids.display.children[0].texture.blit_buffer(pbuffer=self.slic.rgb.flatten()) self.root.ids.display.children[0].canvas.ask_update() def mark_borders(self): if self.t.is_alive(): print 'not done yet' return if self.slic == None: print 'No image loaded.' return elif self.img_segmented == False: print 'Image not segmented yet.' return self.slic.mark_border() self.root.ids.display.children[0].texture.blit_buffer(pbuffer=self.slic.rgb.flatten()) self.root.ids.display.children[0].canvas.ask_update() def make_mean(self): if self.slic == None: print 'No image loaded.' return elif self.img_segmented == False: print 'Image not segmented yet.' return self.slic.reload_orig() self.slic.make_mean() self.root.ids.display.children[0].texture.blit_buffer(pbuffer=self.slic.rgb.flatten()) self.root.ids.display.children[0].canvas.ask_update()
from slic import Slic fn = '/Users/Hagen/Desktop/slics/Tokyo/IMG_1312.JPG' test = Slic(fn) test.segment(300, 5, 1) #test.make_mean() #test.mark_border() test.draw_triangles_random(500000) #test.color_triangles() test.save('/Users/Hagen/Desktop/test.jpg')