Neural Network Model for solving captchas in Python
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

35 lines
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_teste/*')
  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)