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.

41 lines
1.6KB

  1. import cv2
  2. import os
  3. import glob
  4. import numpy as np
  5. import base64
  6. def tratar_imagens(pasta_origem, pasta_destino='captcha_tratado'):
  7. arquivos = glob.glob(f'{pasta_origem}/*')
  8. for arquivo in arquivos:
  9. imagem = cv2.imread(arquivo)
  10. imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_RGB2GRAY)
  11. _, imagem_tratada = cv2.threshold(imagem_cinza, 127, 255, cv2.THRESH_BINARY or cv2.THRESH_OTSU)
  12. image = imagem_tratada
  13. _, binary_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY_INV)
  14. kernel = np.ones((2, 2), np.uint8)
  15. opened_image = cv2.morphologyEx(binary_image, cv2.MORPH_OPEN, kernel)
  16. result_image = cv2.bitwise_not(opened_image)
  17. nome_arquivo = os.path.basename(arquivo)
  18. cv2.imwrite(f'{pasta_destino}/{nome_arquivo}', result_image)
  19. def tratar_base64(imagem_base64):
  20. imagem_bytes = base64.b64decode(imagem_base64)
  21. imagem_np = np.frombuffer(imagem_bytes, np.uint8)
  22. imagem = cv2.imdecode(imagem_np, cv2.IMREAD_COLOR)
  23. imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
  24. _, imagem_tratada = cv2.threshold(imagem_cinza, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
  25. _, imagem_binaria = cv2.threshold(imagem_tratada, 128, 255, cv2.THRESH_BINARY_INV)
  26. kernel = np.ones((2, 2), np.uint8)
  27. imagem_aberta = cv2.morphologyEx(imagem_binaria, cv2.MORPH_OPEN, kernel)
  28. imagem_resultado = cv2.bitwise_not(imagem_aberta)
  29. return imagem_resultado
  30. if __name__ == "__main__":
  31. tratar_imagens('captcha_images')