Skip to content

Instantly share code, notes, and snippets.

@samuellangajr
Created March 12, 2025 18:39
Show Gist options
  • Save samuellangajr/790d8e8accaee08d22fc6cde253d23e9 to your computer and use it in GitHub Desktop.
Save samuellangajr/790d8e8accaee08d22fc6cde253d23e9 to your computer and use it in GitHub Desktop.
Escreva um pseudocódigo ou código Python para carregar um conjunto de dados de imagens, pré-processá-las (redimensionar e normalizar) e dividi-las em conjuntos de treino e teste.
import os
import numpy as np
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from sklearn.model_selection import train_test_split
from tensorflow.keras.utils import to_categorical
import matplotlib.pyplot as plt
# Definir o caminho do diretório onde as imagens estão armazenadas
image_dir = 'caminho/para/imagens'
# Definir tamanho de redimensionamento
image_size = (128, 128)
# Carregar imagens
images = []
labels = []
# Iterar sobre os arquivos no diretório de imagens
for class_name in os.listdir(image_dir):
class_path = os.path.join(image_dir, class_name)
# Verificar se é um diretório de classe
if os.path.isdir(class_path):
for image_name in os.listdir(class_path):
image_path = os.path.join(class_path, image_name)
# Carregar a imagem
img = load_img(image_path, target_size=image_size)
img_array = img_to_array(img) # Converter para array numpy
# Normalizar a imagem
img_array = img_array / 255.0 # Normalização para intervalo [0, 1]
images.append(img_array)
labels.append(class_name)
# Converter listas para arrays numpy
images = np.array(images)
labels = np.array(labels)
# Converter rótulos para valores inteiros
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
labels = label_encoder.fit_transform(labels)
# One-hot encoding para as labels
labels = to_categorical(labels)
# Dividir o conjunto de dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42)
# Visualizar algumas imagens
plt.figure(figsize=(10, 10))
for i in range(9):
plt.subplot(3, 3, i+1)
plt.imshow(X_train[i])
plt.title(f"Classe: {label_encoder.inverse_transform([np.argmax(y_train[i])])[0]}")
plt.axis('off')
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment