示例#1
0
def penulangan(bw):
    # remove non Zhang Suen's tulang
    bwr = np.copy(bw)
    cblack_l = 0
    cblack_c = bwr.nonzero()[0].shape[0]
    while cblack_l != cblack_c:
        cblack_l = bwr.nonzero()[0].shape[0]
        bwr[:] = to_tulang(bwr, 1)
        bwr[:] = to_tulang(bwr, 2)
        cblack_c = bwr.nonzero()[0].shape[0]
    bwr[:] = gambar.koponging(bwr)
    return bwr
示例#2
0
def main():
    features = []
    path = 'train'
    for type in ['number', 'upper', 'lower', 'other']:
        for name in [f for f in listdir(join(path, type)) if isfile(join(path, type, f))]:
            img = gambar.read(join(path, type, name))
            img = gambar.asgray(img)
            img = gambar.tobw(img)
            img = gambar.koponging(img)
            
            pixels = objek.getpixels(img)
            center = objek.getcenter(pixels)
            feature = objek.getfeature(img, pixels, center)
            
            features.append({'label': splitext(name)[0], 'data': feature.tolist()})
    
    with open('features.json', 'w') as outfile:
        json.dump(features, outfile)
示例#3
0
def main():
    method = sys.argv[1]
    input = sys.argv[2]
    id = sys.argv[3]
    home = os.path.expanduser('~')+'\\.IF5181\\'
    dir = home+id+'\\'

    if not os.path.isdir(dir):
        if os.path.isdir(home):
            shutil.rmtree(home, ignore_errors=True)
        if not os.path.isdir(home):
            os.mkdir(home)
        os.mkdir(dir)

    os.chdir('py')
    
    if method == 'histogram':
        img = gambar.read(input)
        hist = gambar.get_histogram(img)
        json_save({
            'r': list(gambar.get_histogram(img[:, :, 0])),
            'g': list(gambar.get_histogram(img[:, :, 1])),
            'b': list(gambar.get_histogram(img[:, :, 2])),
        }, dir+'histogram.json')

    elif method == 'equalize':
        img = gambar.read(input)
        gray = gambar.to_gray(img)
        hist_gray = gambar.get_histogram(gray)
        result, hist_result = gambar.equalize(gray, hist_gray)
        
        gambar.save(gray, dir+'gray.jpg')
        json_save(list(hist_gray), dir+'histogram_gray.json')
        
        gambar.save(result, dir+'equalized.jpg')
        json_save(list(hist_result), dir+'histogram_equalized.json')
    
    elif method == 'otsu':
        img = gambar.read(input)
        
        gray = gambar.to_gray(img)
        gambar.save(gray, dir+'gray.jpg')
        
        bw = gambar.to_bw(gray)
        gambar.save(bw, dir+'binary.jpg')
    
    elif method == 'derajat0':
        img = gambar.read(input)
        
        gray = gambar.to_gray(img)
        gambar.save(gray, dir+'gray.jpg')
        
        average = konvolusi.derajat0(gray, 'average')
        gambar.save(average, dir+'derajat0-average.jpg')
        
        homogen = konvolusi.derajat0(gray, 'homogen')
        gambar.save(homogen, dir+'derajat0-homogen.jpg')
        
        difference = konvolusi.derajat0(gray, 'difference')
        gambar.save(difference, dir+'derajat0-difference.jpg')
    
    elif method == 'derajat1':
        img = gambar.read(input)
        
        gray = gambar.to_gray(img)
        gambar.save(gray, dir+'gray.jpg')
        
        sobel = konvolusi.derajat1(gray, 'sobel')
        gambar.save(sobel, dir+'derajat1-sobel.jpg')
        
        prewitt = konvolusi.derajat1(gray, 'prewitt')
        gambar.save(prewitt, dir+'derajat1-prewitt.jpg')
    
    elif method == 'derajat2':
        img = gambar.read(input)
        
        gray = gambar.to_gray(img)
        gambar.save(gray, dir+'gray.jpg')
        
        kirsch = konvolusi.derajat2(gray, 'kirsch')
        gambar.save(kirsch, dir+'derajat2-kirsch.jpg')
        
        prewitt = konvolusi.derajat2(gray, 'prewitt')
        gambar.save(prewitt, dir+'derajat2-prewitt.jpg')
    
    elif method == 'gauss':
        img = gambar.read(input)
        gambar.save(konvolusi.gaussian(img), dir+'gauss.jpg')
    
    elif method == 'chaincode':
        img = gambar.read(input)
        gray = gambar.to_gray(img)
        bw = gambar.to_bw(gray)
        gambar.save(bw, dir+'binary.jpg')
        
        kopong = gambar.koponging(bw)
        gambar.save(kopong, dir+'kopong.jpg')
        
        code = chaincode.get_chaincode(kopong)
        belok = chaincode.get_kodebelok(code)
        json_save(code, dir+'chaincode.json')
        json_save(belok, dir+'kodebelok.json')
    
    elif method == 'skeleton':
        img = gambar.read(input)
        gray = gambar.to_gray(img)
        bw = gambar.to_bw(gray)
        gambar.save(bw, dir+'binary.jpg')
        
        tulang = zhangsuen.penulangan(bw)
        gambar.save(tulang, dir+'tulang.jpg')
        
        ujung, simpangan = zhangsuen.get_identity(tulang)
        json_save({
            'ujung': [[int(y), int(x)] for y, x in ujung],
            'simpangan': [[int(y), int(x)] for y, x in simpangan],
        }, dir+'tulang-identity.json')
        
        code = zhangsuen.get_chaincode(tulang)
        belok = chaincode.get_kodebelok(code)
        json_save(code, dir+'tulang-chaincode.json')
        json_save(belok, dir+'tulang-kodebelok.json')
    
    elif method == 'ocr':
        result = ocr.main(input)
        json_save({
            'result': result
        }, dir+'ocr-result.json')
    
    elif method == 'face-warna':
        img = gambar.read(input)
        
        masker = wajah.get_masker(img)
        maskered = wajah.draw_masker(img, masker)
        gambar.save(maskered, dir+'face-masker.jpg')
        
        wajahs = wajah.get_wajahs(masker)
        kotaked = wajah.draw_kotak(img, wajahs)
        gambar.save(kotaked, dir+'face-kotak.jpg')
    
    elif method == 'face-bentuk':
        img = gambar.read(input)
        wajah.limatitik(img)
        wajah.titikobjek(img)
    
    elif method == 'face-recognition':
        facer.main(input)
示例#4
0
        dir = 10 if dir == 2 else dir
    
    if dir_last <= 2:
        dir = -1 if dir == 7 else dir
    if dir_last <= 1:
        dir = -2 if dir == 6 else dir
    if dir_last <= 0:
        dir = -3 if dir == 5 else dir
    
    if dir > dir_last:
        return '+'
    elif dir < dir_last:
        return '-'
    else:
        return None

def get_pixels(kopong):
    return np.asarray(kopong.nonzero())[[1,0]] # returns [[x1, x2, ..., xn],
                                               #          [y1, y2, ..., yn]]

def get_center(pixels):
    return pixels.mean(1)

if __name__ == ('__main__'):
    img = gambar.read(sys.argv[1])
    gray = gambar.to_gray(img)
    bw = gambar.to_bw(gray)
    kopong = gambar.koponging(bw)
    
    chaincode = get_chaincode(kopong)
    kodebelok = get_kodebelok(chaincode)