class Znacky: """ M. Jiřík I. Pirner P. Zimmermann Takto bude vytvořeno vaše řešení. Musí obsahovat funkci 'rozpoznejZnacku()', která má jeden vstupní parametr. Tím je obraz. Doba trváná funkce je omezena na 1 sekundu. Tato funkce rovněž musí obsahovat ukázkový režim. V něm je pomocí obrázků vysvětleno, jak celá věc pracuje. """ def __init__(self): # Načítání natrénovaných parametrů klasifikátoru ze souboru atd. # Soubory je nelze načítat pomocí prosté cesty # Je potřeba adresovat relativně k poloze aktuálnímu skriptu # vyzkoušet je to možné spuštěním skriptu z jiného než aktuálního adresáře # python ../projects/zdo/mujsuperskript.py ## cesta ke skriptu # path_to_script = os.path.dirname(os.path.abspath(__file__)) ## spojení s relativní cestou # classifier_path = os.path.join(path_to_script, "../data/data.pkl") pass def rozpoznejZnacku(self, image, demo=False): # Nějaký moc chytrý kód if image.shape[0] > 10: retval = 'P2' else: retval = 'C4a' if demo: print "Výpisy parametrů, obrázky atd." return retval import glob import os # nacitani z adresare def readImageDir(path): dirs = glob.glob(os.path.join(os.path.normpath(path) ,'*')) labels = [] files = [] for onedir in dirs: #print onedir base, lab = os.path.split(onedir) if os.path.isdir(onedir): filesInDir = glob.glob(os.path.join(onedir, '*')) for onefile in filesInDir: labels.append(lab) files.append(onefile) return files, labels files, labels = readImageDir('/home/mjirik/data/zdo2014/zdo2014-training/') print "pocet souboru ", len(files) print 'prvnich 3 soubory \n', files[0:3] print 'prvnich 3 labely \n', labels[0:3] # Zjednodušená podoba kontroly import signal import skimage import skimage.io import numpy as np # na windows nefunguje knihovna contextlib # v kodu je proto náhrada od M. Červeného pomocí time import time def kontrola(ukazatel): studentske_reseni = ukazatel() # tim je zavolán váš konstruktor __init__ obrazky = ['http://147.228.240.61/zdo/P2_id14368_ff74-FL_1_131030_00002530.jpg', 'http://147.228.240.61/zdo/Z3_id18972_ff2347-FL_1_131030_00020439.jpg', 'http://147.228.240.61/zdo/P1_id13258_ff7546-FL_1_131030_00066180-1.jpg' ] reseni = ['P2', 'Z3', 'P1'] vysledky = [] for i in range(0, len(obrazky)): cas1 = time.clock() im = skimage.io.imread(obrazky[i]) result = studentske_reseni.rozpoznejZnacku(im) cas2 = time.clock() if((cas2 - cas1) >= 1.0): print "cas vyprsel" result = 0 vysledky.append(result) hodnoceni = np.array(reseni) == np.array(vysledky) skore = np.sum(hodnoceni.astype(np.int)) / np.float(len(reseni)) print skore ukazatel = Znacky kontrola(ukazatel)