国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中驗證碼連通域分割的方法詳解

2020-02-15 21:37:15
字體:
來源:轉載
供稿:網友

實現思路

是用深度遍歷,對圖片進行二值化處理,先找到一個黑色像素,然后對這個像素的周圍8個像素進行判斷,如果沒有訪問過,就保存起來,然后最后這個數組的最小x和最大x就是x軸上的切割位置。這種分割的方法還是只能適用于沒有粘連的驗證碼,比垂直分割的好處是,可以處理位置比較奇怪的驗證碼。

示例代碼

def cfs(img): """傳入二值化后的圖片進行連通域分割""" pixdata = img.load() w,h = img.size visited = set() q = queue.Queue() offset = [(-1,-1),(0,-1),(1,-1),(-1,0),(1,0),(-1,1),(0,1),(1,1)] cuts = [] for x in range(w): for y in range(h):  x_axis = []  #y_axis = []  if pixdata[x,y] == 0 and (x,y) not in visited:  q.put((x,y))  visited.add((x,y))  while not q.empty():  x_p,y_p = q.get()  for x_offset,y_offset in offset:   x_c,y_c = x_p+x_offset,y_p+y_offset   if (x_c,y_c) in visited:   continue   visited.add((x_c,y_c))   try:   if pixdata[x_c,y_c] == 0:    q.put((x_c,y_c))    x_axis.append(x_c)    #y_axis.append(y_c)   except:   pass  if x_axis:  min_x,max_x = min(x_axis),max(x_axis)  if max_x - min_x > 3:   # 寬度小于3的認為是噪點,根據需要修改   cuts.append((min_x,max_x + 1)) return cuts def saveSmall(img, outDir, cuts): w, h = img.size pixdata = img.load() for i, item in enumerate(cuts): box = (item[0], 0, item[1], h) img.crop(box).save(outDir + str(i) + ".png")img = Image.open('out/51.png') saveSmall(img, 'cfs/', cfs(img))

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

參考這篇文章: //www.jb51.net/article/141434.htm

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨脱县| 正镶白旗| 牟定县| 鄂州市| 宿州市| 定州市| 虹口区| 开远市| 浑源县| 梅河口市| 安福县| 忻城县| 宜兰县| 珲春市| 嘉善县| 福鼎市| 安远县| 遵化市| 剑川县| 宁安市| 马公市| 屏山县| 社旗县| 怀来县| 乐山市| 桦甸市| 正安县| 榆社县| 炎陵县| 和田县| 华安县| 连州市| 隆回县| 色达县| 申扎县| 新余市| 罗平县| 修水县| 甘谷县| 新安县| 汽车|