国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博野县| 颍上县| 监利县| 象州县| 江陵县| 福州市| 左云县| 阳江市| 东丽区| 芜湖市| 惠来县| 仙居县| 九江县| 大安市| 石嘴山市| 赤峰市| 镶黄旗| 襄城县| 朝阳市| 高陵县| 武冈市| 囊谦县| 资中县| 闵行区| 确山县| 金乡县| 鄂托克前旗| 沙田区| 政和县| 潞城市| 南木林县| 毕节市| 洪雅县| 昆山市| 达孜县| 胶州市| 盐山县| 南城县| 文昌市| 石泉县| 陵水|