opencv 식별 위 챗 로그 인 인증 슬라이더 위치

목표.
위 챗 을 식별 하여 새 계 정 에 로그 인 합 니 다.슬라이더 인증 을 드래그 해 야 할 때 대상 블록 은 그림 의 위치 에 비해
전제 관련 정보:
  • 슬라이더 와 목표 위치의 거 리 는 무 작위 이 고 일정한 범위 내 에서 최대 최소 치 를[min,max]
  • 로 설정 합 니 다.
  • 슬라이더 가 목표 에서 좌우 10 개 단위 로 미 끄 러 지 는 오차 내 에서 도 검증
  • 을 통과 할 수 있다.
  • 매번 슬라이더 인증 코드 는 세 번 재 시도 할 기회 가 있 으 며,세 번 검증 되 지 않 으 면 위 챗 은 자동 으로 인증 코드
  • 를 바꾼다.
  • 인증번호 무한 리 셋 가능
  • 응용 기계 학습 은 뛰어난 식별 율 에 이 를 수 있 지만 시간+학습 원 가 를 고려 하여 기계 학습 방식
  • 을 사용 하지 않 는 다.
    관련 사진 정보
    캡 처-안 드 로 이 드 자체 캡 처 도 구 를 통 해 검 증 된 인터페이스 를 캡 처 하고 코드 에 screenshot.jpg 입 니 다.



    세 가지 방안
    1.랜 덤 드래그
    기본 사고방식:
    매번 인증 코드 의 세 번 의 재 시도 기 회 는 각각 min+10,(min+max)/2,max-10 세 위치 로 드래그 합 니 다.
    통과 하지 않 으 면 인증 코드 를 새로 고치 고 상기 과정 을 반복 합 니 다.
    장점:
  • 한 장의 인증번호 통과 율 하위
  • 캡 처 하지 않 고 그림 과 슬라이더 를 다운로드 하지 않 아 도 됩 니 다
  • python-opencv 층 에 가입 할 필요 가 없습니다
  • 무한 재 시도 가 가능 하기 때문에 많이 시도 하면 통과 할 수 있다
  • 단점:
  • 판단 하 는 위 치 는 min,max 에 의 해 추정 되 는 대체적인 범위
  • 이다.
  • min,max 의 값 이 뚜렷하게 변 하면 프로그램 도 min 과 max 의 값 을 수정 하 는 데 응답 해 야 합 니 다.
  • 2.색상 에 따라 이미지 의 목표 위 치 를 식별 합 니 다(이 방안 을 사용 하려 고 합 니 다)
    기본 사고방식:
    목표 위치 에 있 는 색상 의 규칙 성(일반적으로 회색,회색)에 따라 색상 범 위 를 정 합 니 다.

    그림 에서 inRange 로 그림 을 흑백 으로 변환 하고 흰색 부분 은 원 그림 에서 색상 범위 에 맞 는 구역 으로 변환 합 니 다.
    find Contours 로 모든 윤곽 을 찾 아 윤곽 과 관련 된 요소 점 의 가장 많은 몇 가지 에 따라 목표 위치의 대략적인 범 위 를 판단 합 니 다.
    코드 구현
    
    #     
    screenshot = cv2.imread('screenshot.jpg')
    #             
    inRange = cv2.inRange(screenshot, np.array([90, 90, 90]), np.array([115, 115, 115]))
    #           
    _, cnts, _ = cv2.findContours(inRange.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    #         ,                
    cnts.sort(key=len, reverse=True)
    #       (                 )
    for cnt in cnts[0: 2]:
      xSum = 0
      xCounter = 0
      for position in cnt:
        xCounter += 1
        xSum += position[0][0]
      #       X     ,         60     ,                
      x = int(xSum / xCounter - 60)
      #          ,     x    
      cv2.line(screenshot, (x, 0), (x, 500), (0, 0, 255), 5)
    cv2.imshow("screenshot", screenshot)
    cv2.waitKey(0)
    장점:
  • 한 장의 인증 코드 통과 율 중간
  • 그림 과 슬라이더 그림 을 다운로드 하지 않 아 도 됩 니 다.
  • 단점:
  • 판단 하 는 위 치 는 아직도 대체적으로 범위 이 고 첫 번 째 무 작위 위치 범위 보다 정확성 이 비교적 높 아 졌 다
  • .
  • python-opencv 층 을 추가 해 야 합 니 다
  • 캡 처 필요
  • 슬라이더 에 따라 목표 위 치 를 식별
  • 기본 사고방식:
    슬라이더 와 목표 위치의 차 이 는 목표 위치 에 회색 투명 전경 치 를 더 하고 그림 처리 시 슬라이더 그림 에 같은 회색 투명 전경 치 를 더 한 다 는 것 이다.


    처 리 된 슬라이더 로 목표 위치 와 일치 합 니 다.
    코드 구현:
    
    #       ,                ,     
    block = cv2.imread('block.jpg')
    blockCopy = block.copy()
    w, h = block.shape[:-1]
    cv2.rectangle(blockCopy, (0, 0), (w, h), (47, 47, 47), -1)
    cv2.addWeighted(blockCopy, 0.7, block, 0.3, 0, block)
    block = cv2.cvtColor(block, cv2.COLOR_RGB2GRAY)
    #        ,   
    captcha = cv2.imread('captcha.jpg')
    captchaGray = cv2.cvtColor(captcha, cv2.COLOR_RGB2GRAY)
    #   captcha   block   
    res = cv2.matchTemplate(captchaGray, block, cv2.TM_SQDIFF)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    #           
    cv2.rectangle(captcha, min_loc, (min_loc[0] + w, min_loc[1] + h), (0, 0, 255), -1)
    cv2.imshow('block', block)
    cv2.imshow("captcha", captcha)
    cv2.waitKey(0);
    장점:
  • 한 장의 인증번호 통 과 률 이 높다
  • 판단 이 성공 하면 위치 가 정확 하 다
  • 단점:
  • python-opencv 층 을 추가 해 야 합 니 다
  • 원본 그림,슬라이더 그림(원본 그림,슬라이더 그림 의 다운로드 가 아직 연구 되 지 않 았 음)
  • 을 다운로드 해 야 합 니 다.
  • 판단 이 성공 하지 못 했 을 때 판단 하 는 위 치 는 일반적으로 목표 위치 에서 크게 벗 어 났 다
  • .
    총결산
    세 가지 방안 중 두 번 째 방안 은 좋 은 검증 율 을 가지 고 세 번 째 방안 에 비해 검증 인터페이스 만 캡 처 하면 개발 이 쉽다.
    다시 말하자면 두 번 째 방안 은 내 가 생각 하 는 비교적 좋 은 방법 이다.

    좋은 웹페이지 즐겨찾기