Losowanie trzech liczb i tworzenie z nich liczby trzycyfrowej

This commit is contained in:
Aniela 2022-05-30 17:56:30 +02:00
parent 627a6b5ab8
commit 7551296681
2 changed files with 25 additions and 13 deletions

View File

@ -125,6 +125,7 @@ def main():
if krata_magazynu.agent.cel is None: if krata_magazynu.agent.cel is None:
nadaj_cel_agentowi(krata_magazynu.agent) nadaj_cel_agentowi(krata_magazynu.agent)
krata_magazynu.agent.idzDoCelu() krata_magazynu.agent.idzDoCelu()
recognition()
if flaga1 == 1: if flaga1 == 1:
osoba.krata.krata[osoba.wiersz][osoba.kolumna] = ZawartoscPola.PUSTE osoba.krata.krata[osoba.wiersz][osoba.kolumna] = ZawartoscPola.PUSTE
@ -146,7 +147,7 @@ def main():
pygame.time.wait(1500) pygame.time.wait(1500)
flaga1 = 0 flaga1 = 0
t = threading.Timer(5.0, zdarzenie_osoba).start() t = threading.Timer(5.0, zdarzenie_osoba).start()
recognition()
try: try:
main() main()

View File

@ -5,6 +5,7 @@ import matplotlib.pyplot as plt
import tensorflow as tf import tensorflow as tf
import random import random
mnist = tf.keras.datasets.mnist mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data() (x_train, y_train), (x_test, y_test) = mnist.load_data()
@ -12,32 +13,42 @@ x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1) x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential() model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28))) model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128, activation='relu')) model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(128, activation='relu')) model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(10, activation='softmax')) model.add(tf.keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.compile(optimizer ='adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(x_train, y_train, epochs=3) model.fit(x_train, y_train, epochs = 3)
model.save('handwritten.model') model.save('handwritten.model')
model = tf.keras.models.load_model('handwritten.model') model = tf.keras.models.load_model('handwritten.model')
numery_paczek=[]
def recognition(): def recognition():
image_number = random.randint(1, 9) digits=[]
try: try:
for i in range(0,3):
image_number = random.randint(1, 19)
img = cv2.imread(f"digits/digit{image_number}.png")[:,:,0] img = cv2.imread(f"digits/digit{image_number}.png")[:,:,0]
img = np.invert(np.array([img])) img = np.invert(np.array([img]))
prediction = model.predict(img) prediction = model.predict(img)
print(f"This digit is probably a {np.argmax(prediction)}") print(f"This digit is probably a {np.argmax(prediction)}")
digits.append(np.argmax(prediction))
plt.imshow(img[0], cmap = plt.cm.binary) plt.imshow(img[0], cmap = plt.cm.binary)
plt.show() plt.show()
except: except:
print("Error!") print("Error!")
liczba = int(str(digits[0]) + str(digits[1])+str(digits[2]))
if liczba in numery_paczek or liczba<100:
recognition()
else:
numery_paczek.append(liczba)
print(liczba)
loss, accuracy = model.evaluate(x_test, y_test) loss, accuracy = model.evaluate(x_test, y_test)
print(loss) print(loss)
print(accuracy) print(accuracy)
print(numery_paczek)
return liczba
recognition() recognition()