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字符串的方法与操作大全
Jan 30 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
Atom的python插件和常用插件说明
Jul 08 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python绘制随机网络图形示例
Nov 21 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
为什么说python适合写爬虫
Jun 11 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python竟然能剪辑视频
May 25 Python
python ansible自动化运维工具执行流程
Jun 24 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php在线代理转向代码
2012/05/05 PHP
php 类自动载入的方法
2015/06/03 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
python threading模块操作多线程介绍
2015/04/08 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
使用npy转image图像并保存的实例
2020/07/01 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
自我鉴定范文200字
2013/10/02 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
安全学习心得体会范文
2016/01/18 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书