使用python的OpenCV模組識別滑動驗證碼的缺口
阿新 • • 發佈:2019-01-10
前面寫過一篇使用selenium模擬登入解決滑塊驗證問題,在該篇文章裡,使用selenium滑動模組找缺口主要靠“蒙”,最近終於找到一個好的方法,可以將滑動驗證碼中的缺口識別出來了,主要是學習了點選開啟連結中的方法,再次表示萬分感謝。
target.jpg
template.png
現在想要通過“template.png”在“target.jpg”中找到對應的缺口,程式碼實現如下:
# encoding=utf8 import cv2 import numpy as np def show(name): cv2.imshow('Show', name) cv2.waitKey(0) cv2.destroyAllWindows() def main(): otemp = 'template.png' oblk = 'target.jpg' target = cv2.imread(otemp, 0) template = cv2.imread(oblk, 0) w, h = target.shape[::-1] temp = 'temp.jpg' targ = 'targ.jpg' cv2.imwrite(temp, template) cv2.imwrite(targ, target) target = cv2.imread(targ) target = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY) target = abs(255 - target) cv2.imwrite(targ, target) target = cv2.imread(targ) template = cv2.imread(temp) result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED) x, y = np.unravel_index(result.argmax(), result.shape) # 展示圈出來的區域 cv2.rectangle(template, (y, x), (y + w, x + h), (7, 249, 151), 2) show(template) if __name__ == '__main__': main()
執行結果:
通過執行結果可以知道,已經正確的找到了缺口位置。