Commit a16ee9a8 authored by SCtom's avatar SCtom

optimize code

parent f6d01e6f
sessions/session-4/Image/3/15.png

417 Bytes

sessions/session-4/Image/A/1.png

402 Bytes

sessions/session-4/Image/A/10.png

396 Bytes

sessions/session-4/Image/A/11.png

398 Bytes

sessions/session-4/Image/A/12.png

449 Bytes

sessions/session-4/Image/A/2.png

389 Bytes

sessions/session-4/Image/A/3.png

388 Bytes

sessions/session-4/Image/A/4.png

391 Bytes

sessions/session-4/Image/A/5.png

359 Bytes

sessions/session-4/Image/A/6.png

411 Bytes

sessions/session-4/Image/A/7.png

416 Bytes

sessions/session-4/Image/A/8.png

408 Bytes

sessions/session-4/Image/A/9.png

409 Bytes

sessions/session-4/Test/temp.png

292 Bytes | W: 0px | H: 0px

sessions/session-4/Test/temp.png

343 Bytes | W: 0px | H: 0px

  • 2-up
  • Swipe
  • Onion skin
No preview for this file type
......@@ -2,6 +2,17 @@ from PyQt5.QtCore import Qt, QDir, QFile, QPoint, QRect, QSize
from PyQt5.QtWidgets import QWidget, QPushButton, QLineEdit, QLabel, QGridLayout
from PyQt5.QtGui import QImage, QImageWriter, QPainter, QPen, qRgb, QPixmap
import os
import matplotlib.pyplot as plt
# Import datasets, classifiers and performance metrics
from sklearn import datasets, svm, metrics
from PIL import Image
import numpy as np
import math
from sklearn.metrics import accuracy_score
from sklearn.externals import joblib
class Button(QWidget):
def __init__(self,parent=None, label="Button", on_click=None):
super(Button,self).__init__(parent)
......@@ -128,4 +139,47 @@ class Board(QWidget):
newImage.fill(qRgb(255,255,255))
painter = QPainter(newImage)
painter.drawImage(QPoint(0,0), image)
self.image = newImage
\ No newline at end of file
self.image = newImage
def data_prep_test(self):
im = Image.open('Test/temp.png')
iar = np.array(im)
width, height = im.size
test_data = np.zeros(width*height)
test_data = np.zeros(64*64)
count = 0
for i in range(len(iar)):
for j in range(len(iar[i])):
test_data[count] = math.floor(((np.sum(iar[i][j][:3]/765))))
#print(test_data[count])
count+=1
return test_data
def data_prep_train(self):
print('preporcessing..')
folder_name = 'Image/'
list_of_label = os.listdir(folder_name)
digit_data = list()
digit_label = list()
for label in list_of_label:
label_path = folder_name+str(label)+'/'
list_of_data = os.listdir(label_path)
#print(list_of_data)
for data in list_of_data:
im = Image.open(label_path+'/'+data)
arr_im = np.array(im)
width, height = im.size
gen_data = np.zeros(width*height)
count = 0
for i in range(len(arr_im)):
for j in range(len(arr_im[i])):
#ทำ Normalize ด้วยการ (R+G+B) หาร 765 มาจาก (255+255+255)
gen_data[count] = math.floor(((np.sum(arr_im[i][j][:3]/765))))
count+=1
digit_data.append( gen_data )
digit_label.append( label )
digit_data = np.array(digit_data) #ข้อมูล
digit_label = np.array(digit_label) # label ของข้อมูล
return digit_data,digit_label
\ No newline at end of file
......@@ -5,14 +5,9 @@ from PyQt5.QtWidgets import (QAction, QApplication, QWidget,QGridLayout)
#from trainWidget import TrainWidget
#from testWidget import TestWidget
from ubuwidgets import (Button, ComboWidget, Board)
import os
import matplotlib.pyplot as plt
# Import datasets, classifiers and performance metrics
from sklearn import datasets, svm, metrics
from PIL import Image
import numpy as np
import math
from sklearn import svm, metrics
from sklearn.metrics import accuracy_score
from sklearn.externals import joblib
......@@ -24,6 +19,7 @@ class MainWindow(QWidget):
self.trainButton = Button(self, "Train", self.on_train)
self.saveCombo = ComboWidget(self, "Label: ", "Save", self.on_save)
self.testCombo = ComboWidget(self, "Result: ", "Test", self.on_test, True)
grid = QGridLayout()
grid.addWidget(self.scribbleArea,1,0)
grid.addWidget(self.clearButton,2,0)
......@@ -37,54 +33,10 @@ class MainWindow(QWidget):
def on_clear(self):
self.scribbleArea.clearImage()
def data_prep_train(self):
print('preporcessing..')
list_of_label = os.listdir('Image/')
digit_data = list()
digit_label = list()
for label in list_of_label:
label_path = 'Image/'+str(label)+'/'
list_of_data = os.listdir(label_path)
#print(list_of_data)
for data in list_of_data:
im = Image.open(label_path+'/'+data)
arr_im = np.array(im)
#list_im = str(arr_im.tolist())
width, height = im.size
gen_data = np.zeros(width*height)
count = 0
for i in range(len(arr_im)):
for j in range(len(arr_im[i])):
#ทำ Normalize ด้วยการ (R+G+B) หาร 765 มาจาก (255+255+255)
gen_data[count] = math.floor(((np.sum(arr_im[i][j][:3]/765))))
count+=1
digit_data.append( gen_data )
digit_label.append( label )
digit_data = np.array(digit_data) #ข้อมูล
digit_label = np.array(digit_label) # label ของข้อมูล
return digit_data,digit_label
def data_prep_test(self):
im = Image.open('Test/temp.png')
iar = np.array(im)
#list_im = str(arr_im.tolist())
width, height = im.size
test_data = np.zeros(width*height)
test_data = np.zeros(64*64)
count = 0
for i in range(len(iar)):
for j in range(len(iar[i])):
test_data[count] = math.floor(((np.sum(iar[i][j][:3]/765))))
#print(test_data[count])
count+=1
return test_data
def on_train(self):
digit_data, digit_label = self.data_prep_train()
digit_data, digit_label = self.scribbleArea.data_prep_train()
print('training..')
# Create a classifier: a support vector classifier
......@@ -94,22 +46,23 @@ class MainWindow(QWidget):
classifier.fit(digit_data, digit_label)
#save model
joblib.dump(classifier, 'svmModel.pkl')
expected = digit_label
predicted = classifier.predict(digit_data)
print("Classification report for classifier %s:\n%s\n"
% (classifier, metrics.classification_report(expected, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))
% (classifier, metrics.classification_report(digit_label, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(digit_label, predicted))
print("\naccuracy = ",accuracy_score(digit_label, predicted))
def on_test(self):
print("testing...")
clf = joblib.load('svmModel.pkl')
self.scribbleArea.saveImageTest()
test_data = self.data_prep_test()
test_data = self.scribbleArea.data_prep_test()
predicted = clf.predict([test_data])
print("ผลการทำนาย คือ", predicted)
result = "ผลการทำนาย คือ "+predicted[0]
self.testCombo.set_text(result)
print("ผลการทำนาย คือ", predicted)
def on_save(self):
print('on_save')
self.scribbleArea.saveImage(self.saveCombo.text())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment