from sklearn.preprocessing import LabelEncoder import numpy as np import mahotas import cv2 import os import h5py rozmiar_zdj = tuple((500, 500)) sciezka_do_zdj = "resources/smieci_stare" h5_dane = 'parametry_zdjec.h5' h5_etykiety = 'etykiety.h5' def hu_moments(zdj): zdj = cv2.cvtColor(zdj, cv2.COLOR_BGR2GRAY) momenty = cv2.HuMoments(cv2.moments(zdj)).flatten() return momenty def haralick(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): 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() klasy = os.listdir(sciezka_do_zdj) klasy.sort() dane = [] wszystkie_typy_zdj = [] for klasa in klasy: katalog = os.path.join(sciezka_do_zdj, klasa) biezaca_klasa = klasa for plik in os.listdir(katalog): zdj = cv2.imread(os.path.join(katalog, plik)) zdj = cv2.resize(zdj, rozmiar_zdj) fv_hu_moments = hu_moments(zdj) fv_haralick = haralick(zdj) fv_histogram = histogram(zdj) wiersz = np.hstack([fv_hu_moments, fv_histogram, fv_haralick]) wszystkie_typy_zdj.append(biezaca_klasa) dane.append(wiersz) print(len(wszystkie_typy_zdj)) targetNames = np.unique(wszystkie_typy_zdj) print(targetNames,targetNames.shape) le = LabelEncoder() target = le.fit_transform(wszystkie_typy_zdj) print(target.shape) h5f_data = h5py.File(h5_dane, 'w') h5f_data.create_dataset('dataset_1', data=np.array(dane)) h5f_label = h5py.File(h5_etykiety, 'w') h5f_label.create_dataset('dataset_1', data=np.array(target)) h5f_data.close() h5f_label.close()