<jupyter_start><jupyter_text>Preparando os dados do treinamento
***  Importação dos pacotes
***<jupyter_code># pacote de visão computacional
import cv2
# pacotes de procedimentos numéricos usando matrizes
import numpy as np
# pacote para gerenciamento de bases de dados
import pandas as pd
# pacote para realização de operações com imagens digitais
from PIL import Image
# pacote de visualização gráfica
import matplotlib.pyplot as plt
# pacote de gerenciamento de arquivos do sistema operacional
import os
# pacote de gerenciamento de arquivos do sistema operacional
import shutil<jupyter_output><empty_output><jupyter_text>Carregando as imagens originais
***<jupyter_code># carregando as imagens em um array multidimensional
images = os.listdir('../files/images1')
# carregando os rótulos das imagens em um array
alphabet = 'abcdefghijklmnopqrstuvwxyz'
labels = []
for i in range(0, 26):
    labels.append(alphabet[i])

labels = np.array(labels)<jupyter_output><empty_output><jupyter_text>Transformações Geométricas
***<jupyter_code>def translate(image, Tx = 0, Ty = 0):
    '''
    Função que translada uma imagem na vertical e horizontal
    ''' 

    rows, cols = image.shape
    img = image.copy()
    matrix = np.array( [ [1, 0, Tx], [0, 1, Ty] ], dtype=np.float32)
    dst_img = cv2.warpAffine(img, matrix, (cols, rows))

    return dst_img
def rotation(image, theta=0):
    '''
    Função que rotaciona uma imagem para a esquerda e para direita
    '''
    
    rows, cols = image.shape
    img = image.copy()
    matrix = cv2.getRotationMatrix2D( (cols/2, rows/2),  theta , 1)
    dst_img = cv2.warpAffine(img, matrix, (cols, rows))

    return dst_img<jupyter_output><empty_output><jupyter_text>Testando as transformações geométricas
***<jupyter_code># definindo intervalos úteis para variar as transformações geométricas
theta = np.arange(-10,10)
Tx = np.arange(-5, 5)
Ty = np.arange(-5, 5)
p_translate = np.concatenate((np.array([Tx, np.zeros(Ty.shape)]),np.array([np.zeros(Ty.shape), Ty])), axis = 1)
p_translate = np.concatenate((p_translate, np.array([Tx, Ty])), axis = 1)
# salvando imagens com transformações geométricas de rotação
for i in range(0, 26):
    for j in range(0, 20):
        img = Image.fromarray(rotation(image = images[i], theta = theta[j]))
        img.save('../files/images1/image'+str(i+1)+'-'+str(j+1)+'.tiff')
# salvando imagens com transformações geométricas de translação
for i in range(0, 26):
    for j in range(0, 30):
        img = Image.fromarray(translate(image = images[i], Tx = p_translate[0][j], Ty = p_translate[1][j]))
        img.save('../files/images1/image'+str(i+1)+'-'+str(j+21)+'.tiff')<jupyter_output><empty_output><jupyter_text>Criando um arquivos CSV de referência
***<jupyter_code># criando um array com o nome dos arquivos de imagens
list_files = np.array(os.listdir('../files/images1/'))

# criando um array com o nome dos rótulos
list_labels = []
for i in range(0, len(list_files)):
    list_labels.append(list_files[i].replace('image', '').replace('.tiff', '').split('-')[0])

list_labels = np.array(list_labels)
# salvando as referências dos arquivos de imagens e seus rótulos em um dataframe
dataframe_array = np.concatenate((np.reshape(list_files, (len(list_files),1)), 
                                  np.reshape(list_labels, (len(list_labels),1))), axis=1)

dataframe = pd.DataFrame(dataframe_array, columns=['Path', 'Labels'])
# exportando o dataframe para um arquivos CSV
dataframe.to_csv('../csv_data/braille_character1.csv')
# compactando as imagens de treinamento
shutil.make_archive('../files/images1', 'zip', '../files/images1/')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13029403830590774, 'fraction_numerical': 0.016455354734286484, 'mean_word_length': 4.267045454545454, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '331606', 'license': 'MIT', 'n_tokens_mistral': 1370, 'n_tokens_neox': 1317, 'n_words': 333, 'path': 'make-images/braille-character1.ipynb', 'repo_name': 'code-coffee-ufcg/braillingo-backend', 'size': '3707'}