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
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)
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)
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)