Neural Network Model for solving captchas in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 line
1.4KB

  1. import cv2
  2. import os
  3. import glob
  4. # Caminho para os arquivos de captcha a serem processados
  5. arquivos = glob.glob('captcha_tratado/*')
  6. # Posições fixas para o corte de cada caractere
  7. posicoes_corte = [(6, 40), (56, 90), (111, 144), (161, 197), (214, 250), (265, 297)]
  8. for arquivo in arquivos:
  9. imagem = cv2.imread(arquivo, cv2.IMREAD_GRAYSCALE)
  10. # Aplicar um limiar para binarizar a imagem
  11. _, imagem_bin = cv2.threshold(imagem, 128, 255, cv2.THRESH_BINARY_INV)
  12. imagem_final = cv2.merge([imagem_bin] * 3) # Convertendo de volta para RGB para desenhar os retângulos coloridos
  13. # Processar cada região de corte definida
  14. i = 0
  15. for x1, x2 in posicoes_corte:
  16. i += 1
  17. imagem_caractere = imagem_bin[20:-15, x1:x2] # Cortar a região do caractere
  18. nome_arquivo = os.path.basename(arquivo).replace(".png", f"_letra{i}.png")
  19. imagem_caractere = cv2.bitwise_not(imagem_caractere)
  20. print(f"Save: {nome_arquivo}")
  21. cv2.imwrite(f'caracteres/{nome_arquivo}', imagem_caractere) # Salvar cada caractere como uma imagem
  22. # Desenhar um retângulo ao redor do caractere na imagem original para visualização
  23. cv2.rectangle(imagem_final, (x1, 0), (x2, imagem_bin.shape[0]), (0, 255, 0), 1)
  24. # Salvar a imagem com os retângulos desenhados
  25. nome_arquivo = os.path.basename(arquivo)
  26. cv2.imwrite(f"identificado/{nome_arquivo}", imagem_final)