SZI-Smieciarka/tworzenie_danych_AO.py

71 lines
1.7 KiB
Python
Raw Normal View History

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