python中验证码连通域分割的方法详解


Posted in Python onJune 04, 2018

实现思路

是用深度遍历,对图片进行二值化处理,先找到一个黑色像素,然后对这个像素的周围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))

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

参考这篇文章: https://3water.com/article/141434.htm

Python 相关文章推荐
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
详解Python中with语句的用法
Apr 15 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
python判断数字是否是超级素数幂
Sep 27 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
详解【python】str与json类型转换
Apr 29 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
python实现excel公式格式化的示例代码
Dec 23 Python
python 匹配url中是否存在IP地址的方法
Jun 04 #Python
Python实现ping指定IP的示例
Jun 04 #Python
用Python3创建httpServer的简单方法
Jun 04 #Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 #Python
Python闭包执行时值的传递方式实例分析
Jun 04 #Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 #Python
python实现超简单的视频对象提取功能
Jun 04 #Python
You might like
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
php链式操作的实现方式分析
2019/08/12 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
Python迭代用法实例教程
2014/09/08 Python
python使用Tkinter显示网络图片的方法
2015/04/24 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
python实现机器人行走效果
2018/01/29 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
python压包的概念及实例详解
2021/02/17 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
便利店投资创业计划书
2014/02/08 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
借款担保书范文
2014/05/13 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript