コード例 #1
0
ファイル: main.py プロジェクト: hagisgit/SLIC
 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
コード例 #2
0
ファイル: do_slic.py プロジェクト: hagisgit/SLIC
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 30 17:05:49 2016

@author: hagen meredig
"""

from slic import Slic

# Dateiname: Zwischen die beiden Anführungszeichenunten in der Zeile kommt 
# der Pfad zur Bilddatei die du bearbeiten willst, 
# also z.B. fn = '/Users/sds/testbild.png'
fn = '/Users/hagen/Desktop/test.jpg' 

# das generiert das Programmobjekt, das die Segmentierung durchführt
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)
コード例 #3
0
ファイル: slic_test.py プロジェクト: hagisgit/SLIC
"""
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()
コード例 #4
0
ファイル: main.py プロジェクト: hagisgit/SLIC
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()
コード例 #5
0
ファイル: test_slic.py プロジェクト: hagisgit/SLIC
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')