diff --git a/etykiety.h5 b/etykiety.h5 index c7604bc..aa05199 100644 Binary files a/etykiety.h5 and b/etykiety.h5 differ diff --git a/game.py b/game.py index 7f7fd9f..1d4212f 100644 --- a/game.py +++ b/game.py @@ -6,11 +6,14 @@ import os import shutil import astar import uczenie_kacper as kacper +import uczenie_adamO as adamO smieci_path = '' +smieci_w_kontenerach = "resources\\smieci w kontenerach" # PODAJ OSOBE PRZED URUCHOMIENIEM (kacper/adamB/adamO) -osoba = 'kacper' +osoba = 'adamO' +rfc = None if osoba == 'kacper': smieci_path = 'resources/smieci' @@ -18,6 +21,7 @@ elif osoba == 'adamB': smieci_path = 'resources/smieci_stare' else: smieci_path = 'resources/smieci_stare' + rfc = adamO.rozpocznijUczenie() pygame.init() @@ -101,7 +105,7 @@ def game(): elif osoba == 'adamB': pass else: - pass + rodzaj = adamO.przewidz(smiec, rfc) if rodzaj == "paper": obiekty["smieciarka"].dodajPapier(smiec) @@ -138,8 +142,8 @@ def game(): obiekty["kontener_plastik"].dodajSmiec(smiec) clock.tick(7) - pygame.quit() + return rfc def rysowaniePlanszy(obiekty): @@ -195,15 +199,19 @@ def utworzObiekty(): pygame.display.set_caption("Inteligentna śmieciarka") # kontenery - if os.path.exists('resources/smieci w kontenerach'): - shutil.rmtree("resources/smieci w kontenerach") - os.makedirs('resources/smieci w kontenerach') + if not os.path.exists(smieci_w_kontenerach): + os.makedirs(smieci_w_kontenerach) + else: + for dir in os.listdir(os.getcwd() + "\\" + smieci_w_kontenerach): + files = os.listdir(os.getcwd() + "\\" + smieci_w_kontenerach + "\\" + dir) + for file in files: + os.remove(os.getcwd() + "\\" + smieci_w_kontenerach + "\\" + dir + "\\" + file) - kontener_plastik = modele.Kontener(0, 0, "plastik") - kontener_plastik.setImage(pygame.image.load( - "resources/plansza/pojemnik_plastik.png")) - plansza[0, 0].setJestKontenerem(True) - plansza[0, 0].setObiekt(kontener_plastik) + kontener_szklo = modele.Kontener(4, 4, "glass") + kontener_szklo.setImage(pygame.image.load( + "resources/plansza/pojemnik_szklo.png")) + plansza[4, 4].setJestKontenerem(True) + plansza[4, 4].setObiekt(kontener_szklo) kontener_metal = modele.Kontener(0, 4, "metal") kontener_metal.setImage(pygame.image.load( @@ -211,17 +219,17 @@ def utworzObiekty(): plansza[0, 4].setJestKontenerem(True) plansza[0, 4].setObiekt(kontener_metal) - kontener_papier = modele.Kontener(4, 0, "papier") + kontener_papier = modele.Kontener(4, 0, "paper") kontener_papier.setImage(pygame.image.load( "resources/plansza/pojemnik_papier.png")) plansza[4, 0].setJestKontenerem(True) plansza[4, 0].setObiekt(kontener_papier) - kontener_szklo = modele.Kontener(4, 4, "szklo") - kontener_szklo.setImage(pygame.image.load( - "resources/plansza/pojemnik_szklo.png")) - plansza[4, 4].setJestKontenerem(True) - plansza[4, 4].setObiekt(kontener_szklo) + kontener_plastik = modele.Kontener(0, 0, "plastic") + kontener_plastik.setImage(pygame.image.load( + "resources/plansza/pojemnik_plastik.png")) + plansza[0, 0].setJestKontenerem(True) + plansza[0, 0].setObiekt(kontener_plastik) # domy doms_array = ['resources/plansza/domy/dom1.png', 'resources/plansza/domy/dom2.png', diff --git a/main.py b/main.py index 1a6c4a5..a83c86e 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,10 @@ -import pygame import game +import uczenie_adamO def main(): - print("poczatek programu") - game.game() + rfc = game.game() + uczenie_adamO.wyswietlZdjecia(rfc) if __name__ == '__main__': diff --git a/modele.py b/modele.py index 2ec4d5d..70d4269 100644 --- a/modele.py +++ b/modele.py @@ -193,7 +193,6 @@ class Kontener(pygame.sprite.Sprite): WIDTH, HEIGHT) self.smieci = [] self.typ = typ - os.makedirs("resources/smieci w kontenerach/" + self.typ) def dodajSmiec(self, smiec): self.smieci.append(smiec) diff --git a/parametry_zdjec.h5 b/parametry_zdjec.h5 index c2591ea..732a82d 100644 Binary files a/parametry_zdjec.h5 and b/parametry_zdjec.h5 differ diff --git a/resources/smieci w kontenerach/glass/glass138.jpg b/resources/smieci w kontenerach/glass/glass138.jpg new file mode 100644 index 0000000..cd20606 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass138.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass152.jpg b/resources/smieci w kontenerach/glass/glass152.jpg new file mode 100644 index 0000000..ebed987 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass152.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass217.jpg b/resources/smieci w kontenerach/glass/glass217.jpg new file mode 100644 index 0000000..aff0118 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass217.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass256.jpg b/resources/smieci w kontenerach/glass/glass256.jpg new file mode 100644 index 0000000..51088d5 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass256.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass363.jpg b/resources/smieci w kontenerach/glass/glass363.jpg new file mode 100644 index 0000000..e784b8e Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass363.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass367.jpg b/resources/smieci w kontenerach/glass/glass367.jpg new file mode 100644 index 0000000..ff98d0a Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass367.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass424.jpg b/resources/smieci w kontenerach/glass/glass424.jpg new file mode 100644 index 0000000..15ac157 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass424.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass441.jpg b/resources/smieci w kontenerach/glass/glass441.jpg new file mode 100644 index 0000000..3af543e Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass441.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass447.jpg b/resources/smieci w kontenerach/glass/glass447.jpg new file mode 100644 index 0000000..3929eb9 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass447.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass464.jpg b/resources/smieci w kontenerach/glass/glass464.jpg new file mode 100644 index 0000000..59ae900 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass464.jpg differ diff --git a/resources/smieci w kontenerach/glass/glass55.jpg b/resources/smieci w kontenerach/glass/glass55.jpg new file mode 100644 index 0000000..c88c314 Binary files /dev/null and b/resources/smieci w kontenerach/glass/glass55.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal131.jpg b/resources/smieci w kontenerach/metal/metal131.jpg new file mode 100644 index 0000000..34928a4 Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal131.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal227.jpg b/resources/smieci w kontenerach/metal/metal227.jpg new file mode 100644 index 0000000..7bf9620 Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal227.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal273.jpg b/resources/smieci w kontenerach/metal/metal273.jpg new file mode 100644 index 0000000..23e9c5d Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal273.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal361.jpg b/resources/smieci w kontenerach/metal/metal361.jpg new file mode 100644 index 0000000..22f61af Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal361.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal53.jpg b/resources/smieci w kontenerach/metal/metal53.jpg new file mode 100644 index 0000000..80c4d63 Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal53.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal77.jpg b/resources/smieci w kontenerach/metal/metal77.jpg new file mode 100644 index 0000000..23d3194 Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal77.jpg differ diff --git a/resources/smieci w kontenerach/metal/metal93.jpg b/resources/smieci w kontenerach/metal/metal93.jpg new file mode 100644 index 0000000..ec2f0ef Binary files /dev/null and b/resources/smieci w kontenerach/metal/metal93.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper111.jpg b/resources/smieci w kontenerach/paper/paper111.jpg new file mode 100644 index 0000000..c603edf Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper111.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper114.jpg b/resources/smieci w kontenerach/paper/paper114.jpg new file mode 100644 index 0000000..fa417cc Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper114.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper175.jpg b/resources/smieci w kontenerach/paper/paper175.jpg new file mode 100644 index 0000000..4b16ab5 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper175.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper204.jpg b/resources/smieci w kontenerach/paper/paper204.jpg new file mode 100644 index 0000000..acbcb7e Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper204.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper233.jpg b/resources/smieci w kontenerach/paper/paper233.jpg new file mode 100644 index 0000000..5193fac Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper233.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper235.jpg b/resources/smieci w kontenerach/paper/paper235.jpg new file mode 100644 index 0000000..02d5639 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper235.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper242.jpg b/resources/smieci w kontenerach/paper/paper242.jpg new file mode 100644 index 0000000..7e4a790 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper242.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper301.jpg b/resources/smieci w kontenerach/paper/paper301.jpg new file mode 100644 index 0000000..033ccd6 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper301.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper334.jpg b/resources/smieci w kontenerach/paper/paper334.jpg new file mode 100644 index 0000000..45ebaea Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper334.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper498.jpg b/resources/smieci w kontenerach/paper/paper498.jpg new file mode 100644 index 0000000..f882197 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper498.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper507.jpg b/resources/smieci w kontenerach/paper/paper507.jpg new file mode 100644 index 0000000..17ee10f Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper507.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper516.jpg b/resources/smieci w kontenerach/paper/paper516.jpg new file mode 100644 index 0000000..ecb31b1 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper516.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper527.jpg b/resources/smieci w kontenerach/paper/paper527.jpg new file mode 100644 index 0000000..d4c23d5 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper527.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper590.jpg b/resources/smieci w kontenerach/paper/paper590.jpg new file mode 100644 index 0000000..03f399b Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper590.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper67.jpg b/resources/smieci w kontenerach/paper/paper67.jpg new file mode 100644 index 0000000..77dbb77 Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper67.jpg differ diff --git a/resources/smieci w kontenerach/paper/paper76.jpg b/resources/smieci w kontenerach/paper/paper76.jpg new file mode 100644 index 0000000..31c036e Binary files /dev/null and b/resources/smieci w kontenerach/paper/paper76.jpg differ diff --git a/resources/smieci w kontenerach/plastic/paper263.jpg b/resources/smieci w kontenerach/plastic/paper263.jpg new file mode 100644 index 0000000..0c1e21d Binary files /dev/null and b/resources/smieci w kontenerach/plastic/paper263.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic110.jpg b/resources/smieci w kontenerach/plastic/plastic110.jpg new file mode 100644 index 0000000..ff6e90b Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic110.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic113.jpg b/resources/smieci w kontenerach/plastic/plastic113.jpg new file mode 100644 index 0000000..6dfd184 Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic113.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic132.jpg b/resources/smieci w kontenerach/plastic/plastic132.jpg new file mode 100644 index 0000000..c65ff18 Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic132.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic151.jpg b/resources/smieci w kontenerach/plastic/plastic151.jpg new file mode 100644 index 0000000..910ed6a Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic151.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic168.jpg b/resources/smieci w kontenerach/plastic/plastic168.jpg new file mode 100644 index 0000000..eb70683 Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic168.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic191.jpg b/resources/smieci w kontenerach/plastic/plastic191.jpg new file mode 100644 index 0000000..a09ab3d Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic191.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic215.jpg b/resources/smieci w kontenerach/plastic/plastic215.jpg new file mode 100644 index 0000000..ced4af3 Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic215.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic219.jpg b/resources/smieci w kontenerach/plastic/plastic219.jpg new file mode 100644 index 0000000..045d53b Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic219.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic312.jpg b/resources/smieci w kontenerach/plastic/plastic312.jpg new file mode 100644 index 0000000..d47f50b Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic312.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic319.jpg b/resources/smieci w kontenerach/plastic/plastic319.jpg new file mode 100644 index 0000000..a0a1703 Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic319.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic34.jpg b/resources/smieci w kontenerach/plastic/plastic34.jpg new file mode 100644 index 0000000..d76969c Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic34.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic368.jpg b/resources/smieci w kontenerach/plastic/plastic368.jpg new file mode 100644 index 0000000..d8faeec Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic368.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic389.jpg b/resources/smieci w kontenerach/plastic/plastic389.jpg new file mode 100644 index 0000000..e112c9b Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic389.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic403.jpg b/resources/smieci w kontenerach/plastic/plastic403.jpg new file mode 100644 index 0000000..e073f5d Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic403.jpg differ diff --git a/resources/smieci w kontenerach/plastic/plastic408.jpg b/resources/smieci w kontenerach/plastic/plastic408.jpg new file mode 100644 index 0000000..3a0a5cf Binary files /dev/null and b/resources/smieci w kontenerach/plastic/plastic408.jpg differ diff --git a/tworzenie_danych_AO.py b/tworzenie_danych_AO.py index 8240f3d..dae7527 100644 --- a/tworzenie_danych_AO.py +++ b/tworzenie_danych_AO.py @@ -11,19 +11,19 @@ h5_dane = 'parametry_zdjec.h5' h5_etykiety = 'etykiety.h5' -def hu_moments(zdj): +def wyznaczHuMomenty(zdj): zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2GRAY) momenty = cv2.HuMoments(cv2.moments(zdj)).flatten() return momenty -def haralick(zdj): +def wyznaczHaralick(zdj): szare_zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2GRAY) haralick = mahotas.features.haralick(szare_zdj).mean(axis=0) return haralick -def histogram(zdj, mask=None): +def wyznaczHistogram(zdj, mask=None): zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2HSV) hist = cv2.calcHist([zdj], [0, 1, 2], mask, [8, 8, 8], [0, 256, 0, 256, 0, 256]) cv2.normalize(hist, hist) @@ -46,11 +46,11 @@ for klasa in klasy: zdj = cv2.resize(zdj, rozmiar_zdj) # zmiana rozmiaru # wyznaczanie parametrow zdjecia - fv_hu_moments = hu_moments(zdj) - fv_haralick = haralick(zdj) - fv_histogram = histogram(zdj) + momenty = wyznaczHuMomenty(zdj) + haralick = wyznaczHaralick(zdj) + histogram = wyznaczHistogram(zdj) - wiersz = np.hstack([fv_hu_moments, fv_histogram, fv_haralick]) # ustaw poziomo, jeden za drugim + wiersz = np.hstack([momenty, histogram, haralick]) # ustaw poziomo, jeden za drugim etykiety_zdj.append(klasa) dane.append(wiersz) diff --git a/uczenie_adamO.py b/uczenie_adamO.py index e69de29..40f7126 100644 --- a/uczenie_adamO.py +++ b/uczenie_adamO.py @@ -0,0 +1,129 @@ +import h5py +import numpy as np +import os +import glob +import cv2 +import warnings +from sklearn.model_selection import train_test_split +from sklearn.ensemble import RandomForestClassifier +import matplotlib.pyplot as plt +import mahotas +import random +from math import ceil + +warnings.filterwarnings('ignore') + +rozmiar_zbioru_testowego = 0.20 +katalog_uczacy = "resources\\smieci_stare" +katalog_testujacy = "resources\\smieci w kontenerach" +h5_parametry = 'parametry_zdjec.h5' +h5_etykiety = 'etykiety.h5' +rozmiar_zdj = tuple((500, 500)) + + +def wyznaczHuMomenty(zdj): + zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2GRAY) + momenty = cv2.HuMoments(cv2.moments(zdj)).flatten() + return momenty + + +def wyznaczHistogram(zdj, mask=None): + zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2HSV) + hist = cv2.calcHist([zdj], [0, 1, 2], mask, [8, 8, 8], [0, 256, 0, 256, 0, 256]) + cv2.normalize(hist, hist) + return hist.flatten() + + +def wyznaczHaralick(zdj): + szare_zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2GRAY) + haralick = mahotas.features.haralick(szare_zdj).mean(axis=0) + return haralick + + +def rozpocznijUczenie(): + klasy = os.listdir(katalog_uczacy) + klasy.sort() + + h5f_parametry = h5py.File(h5_parametry, 'r') + h5f_etykiety = h5py.File(h5_etykiety, 'r') + + dane = h5f_parametry['dataset_1'] + etykiety = h5f_etykiety['dataset_1'] + + dane = np.array(dane) + etykiety = np.array(etykiety) + + h5f_parametry.close() + h5f_etykiety.close() + + (uczenieDane, testowanieDane, uczenieEtykiety, testowanieEtykiety) = train_test_split(np.array(dane), + np.array(etykiety), + test_size=rozmiar_zbioru_testowego) + + rfc = RandomForestClassifier(max_depth=15, n_jobs=4, random_state=1) + rfc.fit(uczenieDane, uczenieEtykiety) + print("uzyskana skutecznosc: ", rfc.score(testowanieDane, testowanieEtykiety)) + return rfc + + +def przewidz(zdjecie, rfc): + klasy = os.listdir(katalog_uczacy) + klasy.sort() + zdj = cv2.imread(zdjecie) + zdj = cv2.resize(zdj, rozmiar_zdj) + + # wyznaczanie parametrow zdjecia + momenty = wyznaczHuMomenty(zdj) + haralick = wyznaczHaralick(zdj) + histogram = wyznaczHistogram(zdj) + + wiersz = np.hstack([momenty, histogram, haralick]) # ustaw poziomo, jeden za drugim + wiersz = wiersz.reshape(1, -1) # zmniejsz wymiar z 2 do 1 + przewidywany_typ = rfc.predict(wiersz)[0] # zwraca wartosc 0,1,2,3 + return klasy[przewidywany_typ] # zwraca glass,metal,paper,plastic + + +def wyswietlZdjecia(rfc): + if rfc is None: + return + + path = os.getcwd() + + klasy = os.listdir(katalog_testujacy) + klasy.sort() + wszystkie_pliki = [] + + for dir in os.listdir(katalog_testujacy): + os.chdir(path + "\\" + katalog_testujacy + "\\" + dir) + pliki = glob.glob('*.jpg') + for i in range(len(pliki)): + pliki[i] = dir + "\\" + pliki[i] + wszystkie_pliki.append(pliki) + os.chdir(path) + + wszystkie_pliki = sum(wszystkie_pliki, []) + rozmiar = ceil(0.25 * len(wszystkie_pliki)) + wybrane_zdjecia = random.sample(wszystkie_pliki, k=rozmiar) + print("ilosc wybranych zdjec: ",len(wybrane_zdjecia)) + + for i in wybrane_zdjecia: + zdjecie = cv2.imread(path + "\\" + katalog_testujacy + "\\" + i) + zdjecie = cv2.resize(zdjecie, rozmiar_zdj) + + # wyznaczanie parametrow zdjecia + momenty = wyznaczHuMomenty(zdjecie) + haralick = wyznaczHaralick(zdjecie) + histogram = wyznaczHistogram(zdjecie) + + wiersz = np.hstack([momenty, histogram, haralick]) # ustaw poziomo, jeden za drugim + wiersz = wiersz.reshape(1, -1) # zmniejsz wymiar z 2 do 1 + + przewidywany = rfc.predict(wiersz)[0] + prawdopodobienstwo = rfc.predict_proba(wiersz) + + cv2.putText(zdjecie, klasy[przewidywany], (3, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 0), thickness=3) + cv2.putText(zdjecie, str(prawdopodobienstwo), (3, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), thickness=1) + cv2.putText(zdjecie, i, (3, 460), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), thickness=2) + + plt.imshow(cv2.cvtColor(zdjecie, cv2.COLOR_BGR2RGB)) + plt.show()