import cv2
import os
import glob

# Caminho para os arquivos de captcha a serem processados
arquivos = glob.glob('captcha_tratado/*')

# Posições fixas para o corte de cada caractere
posicoes_corte = [(6, 40), (56, 90), (111, 144), (161, 197), (214, 250), (265, 297)]

for arquivo in arquivos:
    imagem = cv2.imread(arquivo, cv2.IMREAD_GRAYSCALE)

    # Aplicar um limiar para binarizar a imagem
    _, imagem_bin = cv2.threshold(imagem, 128, 255, cv2.THRESH_BINARY_INV)

    imagem_final = cv2.merge([imagem_bin] * 3)  # Convertendo de volta para RGB para desenhar os retângulos coloridos

    # Processar cada região de corte definida
    i = 0
    for x1, x2 in posicoes_corte:
        i += 1
        imagem_caractere = imagem_bin[20:-15, x1:x2]  # Cortar a região do caractere
        nome_arquivo = os.path.basename(arquivo).replace(".png", f"_letra{i}.png")
        imagem_caractere = cv2.bitwise_not(imagem_caractere)
        print(f"Save: {nome_arquivo}")
        cv2.imwrite(f'caracteres/{nome_arquivo}', imagem_caractere)  # Salvar cada caractere como uma imagem
        
        # Desenhar um retângulo ao redor do caractere na imagem original para visualização
        cv2.rectangle(imagem_final, (x1, 0), (x2, imagem_bin.shape[0]), (0, 255, 0), 1)

    # Salvar a imagem com os retângulos desenhados
    nome_arquivo = os.path.basename(arquivo)
    cv2.imwrite(f"identificado/{nome_arquivo}", imagem_final)
