Neural Network Model for solving captchas in Python
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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