Beispiel #1
0
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 
Beispiel #2
0
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()
Beispiel #3
0
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()
Beispiel #4
0
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')