python對(duì)驗(yàn)證碼降噪的實(shí)現(xiàn)示例代碼
前言:
最近寫(xiě)爬蟲(chóng)會(huì)經(jīng)常遇到一些驗(yàn)證碼識(shí)別的問(wèn)題,現(xiàn)如今的驗(yàn)證碼已經(jīng)是五花八門(mén),剛開(kāi)始的驗(yàn)證碼就是簡(jiǎn)單的對(duì)生成的驗(yàn)證碼圖片進(jìn)行一些干擾,但是隨著計(jì)算機(jī)視覺(jué)庫(kù)的 發(fā)展壯大,可以輕松解決簡(jiǎn)單的驗(yàn)證碼識(shí)別問(wèn)題,于是一些變態(tài) 的驗(yàn)證碼就出來(lái)了,什么滑動(dòng)驗(yàn)證碼,當(dāng)然這個(gè)也是比較好解決的,用python的selenium庫(kù)就可以破解一些滑動(dòng)驗(yàn)證碼。可是還出現(xiàn)了一些語(yǔ)音類,點(diǎn)擊類的驗(yàn)證碼。爬蟲(chóng)與反爬的較量確實(shí)越來(lái)越精彩了,也挺有趣的!最終促進(jìn)的是整個(gè)行業(yè)技術(shù)的發(fā)展與進(jìn)步。

今天分享一個(gè)可以解決簡(jiǎn)單驗(yàn)證碼識(shí)別的代碼。
圖片:

圖像灰度化處理
import cv2
import numpy as np
img = cv2.imread('./picture/1.jpg')
#將圖片灰度化處理,降維,加權(quán)進(jìn)行灰度化c
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('min_gray',gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果:

圖像二值化處理
t,gray2 = cv2.threshold(gray,220,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',gray2)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果:

8領(lǐng)域過(guò)濾
def remove_noise(img,k=4):
img2 = img.copy()
# img處理數(shù)據(jù),k過(guò)濾條件
w,h = img2.shape
def get_neighbors(img3,r,c):
count = 0
for i in [r-1,r,r+1]:
for j in [c-1,c,c+1]:
if img3[i,j] > 10:#純白色
count+=1
return count
# 兩層for循環(huán)判斷所有的點(diǎn)
for x in range(w):
for y in range(h):
if x == 0 or y == 0 or x == w -1 or y == h -1:
img2[x,y] = 255
else:
n = get_neighbors(img2,x,y)#獲取鄰居數(shù)量,純白色的鄰居
if n > k:
img2[x,y] = 255
return img2
result = remove_noise(gray2)
cv2.imshow('8neighbors',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
過(guò)濾后的效果:

代碼整合:
import cv2
import numpy as np
img = cv2.imread('./picture/1.jpg')
#將圖片灰度化處理,降維,加權(quán)進(jìn)行灰度化c
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
t,gray2 = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',gray2)
result = remove_noise(gray2)
cv2.imshow('8neighbors',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python學(xué)習(xí)小技巧之列表項(xiàng)的拼接
這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之列表項(xiàng)的拼接的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
分析Python字符串拼接+=和join()哪個(gè)速度更快
這篇文章主要分析了Python中字符串拼接+=和join()哪個(gè)速度更快,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Tensorflow:轉(zhuǎn)置函數(shù) transpose的使用詳解
今天小編就為大家分享一篇Tensorflow:轉(zhuǎn)置函數(shù) transpose的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
使用Python開(kāi)發(fā)一個(gè)圖像標(biāo)注與OCR識(shí)別工具
這篇文章主要介紹了一個(gè)使用Python開(kāi)發(fā)的工具,允許用戶在圖像上進(jìn)行矩形標(biāo)注,使用 OCR 對(duì)標(biāo)注區(qū)域進(jìn)行文本識(shí)別,并將結(jié)果保存為 Excel 文件,感興趣的可以了解下2025-03-03
python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實(shí)現(xiàn)
這篇文章主要介紹了python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

