Neural Network Model for solving captchas in Python
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1234567891011121314151617181920212223242526272829303132333435363738394041
  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')