婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何用python識別滑塊驗證碼中的缺口

如何用python識別滑塊驗證碼中的缺口

熱門標簽:400電話申請服務商選什么 江蘇客服外呼系統廠家 西藏智能外呼系統五星服務 千陽自動外呼系統 原裝電話機器人 平頂山外呼系統免費 清遠360地圖標注方法 在哪里辦理400電話號碼 工廠智能電話機器人

驗證碼往往是爬蟲路上的一只攔路虎,而其花樣也是層出不窮:圖片驗證、滑塊驗證、交互式驗證、行為驗證等。隨著OCR技術的成熟,圖片驗證已經漸漸淡出主流,而滑塊驗證越來越多地出現在大眾視野。
“這么厲害,這小子長啥樣呢?”沒錯,它就長這損sai:

解決它的方法也很直觀,首先找到缺口的位置(通常只需要X軸的位置),然后拖動滑塊即可。
今天kimol君將帶領大家用python識別出滑塊驗證中的缺口位置。

一、缺口識別

識別圖片中的缺口,主要是利用python中的圖像處理庫cv2,其安裝方法如下:

pip install opencv-python

注:這里并不是“pip install cv2”哦~

1.讀取圖片

滑塊驗證的圖片分為兩部分,一個是背景圖片:

另一個是缺口圖片:

利用imread函數將其讀取:

# 讀取背景圖片和缺口圖片
bg_img = cv2.imread('bg.jpg') # 背景圖片
tp_img = cv2.imread('tp.png') # 缺口圖片

2.識別圖片邊緣

為了更好地將缺口與背景匹配,我們首先得識別出圖片的邊緣:

# 識別圖片邊緣
bg_edge = cv2.Canny(bg_img, 100, 200)
tp_edge = cv2.Canny(tp_img, 100, 200)

這一步很關鍵!否則缺口匹配將不準確。

這里得到了圖片邊緣的灰度圖,進一步將其圖片格式轉為RGB格式:

# 轉換圖片格式
bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)
tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)

轉換后的背景圖為:

轉換后的缺口圖為:

3.缺口匹配

利用cv2中的matchTemplate函數,可以在背景圖片中搜索對應的缺口,具體代碼如下:

# 缺口匹配
res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)

res為每個位置的匹配結果,代表了匹配的概率,選出其中概率最高的點,即為缺口匹配的位置:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 尋找最優匹配

min_val,max_val,min_loc,max_loc分別為匹配的最小值、匹配的最大值、最小值的位置、最大值的位置。
ps.當然,這里完全可以自己寫一個循環來實現,但是有現成的函數為什么不用呢?

至此,我們已經有了缺口的位置,其X軸坐標為:

X = max_loc[0]

為了更直觀地展示缺口的位置,我們將缺口用矩形框標注出來:

# 繪制方框
th, tw = tp_pic.shape[:2] 
tl = max_loc # 左上角點的坐標
br = (tl[0]+tw,tl[1]+th) # 右下角點的坐標
cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2) # 繪制矩形
cv2.imwrite('out.jpg', bg_img) # 保存在本地

結果如下:

完美~ 收工!?。?/p>

二、完整代碼

為了在實際應用中更方便的使用,我們將代碼封裝為一個函數:

def identify_gap(bg,tp,out):
 '''
 bg: 背景圖片
 tp: 缺口圖片
 out:輸出圖片
 '''
 # 讀取背景圖片和缺口圖片
 bg_img = cv2.imread(bg) # 背景圖片
 tp_img = cv2.imread(tp) # 缺口圖片
 
 # 識別圖片邊緣
 bg_edge = cv2.Canny(bg_img, 100, 200)
 tp_edge = cv2.Canny(tp_img, 100, 200)
 
 # 轉換圖片格式
 bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)
 tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)
 
 # 缺口匹配
 res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)
 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 尋找最優匹配
 
 # 繪制方框
 th, tw = tp_pic.shape[:2] 
 tl = max_loc # 左上角點的坐標
 br = (tl[0]+tw,tl[1]+th) # 右下角點的坐標
 cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2) # 繪制矩形
 cv2.imwrite(out, bg_img) # 保存在本地
 
 # 返回缺口的X坐標
 return tl[0] 

這里選擇了讀取本地圖片文件,在爬蟲過程中其實不是特別方便。如果有感興趣的小伙伴,可以自己改動一下,將輸入改為圖片流即可。

以上就是如何用python識別滑塊中的缺口的詳細內容,更多關于python識別滑塊中的缺口的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • python 模擬網站登錄——滑塊驗證碼的識別
  • Python Selenium破解滑塊驗證碼最新版(GEETEST95%以上通過率)
  • Python破解BiliBili滑塊驗證碼的思路詳解(完美避開人機識別)
  • Python模擬登錄之滑塊驗證碼的破解(實例代碼)
  • python滑塊驗證碼的破解實現
  • python3 破解 geetest(極驗)的滑塊驗證碼功能
  • python繞過圖片滑動驗證碼實現爬取PTA所有題目功能 附源碼
  • Python3爬蟲關于識別檢驗滑動驗證碼的實例
  • 基于python實現破解滑動驗證碼過程解析
  • python破解bilibili滑動驗證碼登錄功能
  • python實現騰訊滑塊驗證碼識別

標簽:安慶 白城 西安 天水 日照 隨州 錦州 股票

巨人網絡通訊聲明:本文標題《如何用python識別滑塊驗證碼中的缺口》,本文關鍵詞  如,何用,python,識別,滑塊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何用python識別滑塊驗證碼中的缺口》相關的同類信息!
  • 本頁收集關于如何用python識別滑塊驗證碼中的缺口的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 龙陵县| 宁阳县| 大港区| 安顺市| 崇仁县| 班玛县| 黎城县| 枞阳县| 沧州市| 辰溪县| 西乌珠穆沁旗| 佛坪县| 枣庄市| 莆田市| 吴川市| 财经| 延津县| 凤翔县| 泸定县| 富裕县| 汝州市| 百色市| 汝阳县| 禹城市| 铁岭市| 南皮县| 永善县| 三明市| 双流县| 鄄城县| 湘潭县| 新蔡县| 怀柔区| 云霄县| 和龙市| 尉氏县| 龙门县| 普定县| 长寿区| 奉节县| 鲁甸县|