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.

41 line
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')