13 Star 41 Fork 7

Ross / ImageRecognition

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#ImageRecognition

简单验证码识别

简单验证码程序使用Python语言编写,图形界面使用PyQt4开发。
初衷用于机器识别效果的验证,对于不是特别复杂的验证码图片,程序可以做到自动获取图片阈值。
预置验证码长度为4的粘连切割(虽然很废。。),如果自动获取的阈值失效,使用者也可以手动输入阈值范围再次分割。
这个程序是个人第一个PyQt程序,刚上手Python几个月,界面设计和代码都有很多不太合理的地方。
希望大家提出一些意见,如果能够看得下去代码的话 -_=:
image

Note:

  • Python版本为2.7.x,使用时进入PYQT文件夹,在终端运行UITest.py文件即可
  • 依赖库有: PIL, skimage(matplotlib), pyqt4, sklearn, numpy
  • 图片文件存放在pictures文件夹中,为了测试方便,所有图片的后缀名都为png。
    程序默从PYQT/picture_source/中认读取图片,支持自定义路径选取文件。
    程序中处理过的文件存放在相应的xx_cache文件夹中

可能会出现的错误

pyqt4与skimage中import的冲突

pyqt4与skimage:

  • 由于需要使用skimage阈值计算公式,在UITest.py文件中无法引用imgRec1.py文件
  • 需要解决无法引用skimage.io问题(from skimage import filter, data都不产生问题),即使用skimage中矩阵方式读取图片
  • 已经尝试过将:from PyQt4.xxx import * 改为 from PyQt4 import xxx
  • 实际上是matplotlib引用问题,修改了skimage代码,文件位置(以本机为例):
    /usr/lib/python2.7/site-packages/matplotlib/backends/qt_compat.py
    代码位置:
    114:from PyQt5 import QtCore, QtGui, QtWidgets
    ->
    114:from PyQt4 import QtCore, QtGui, QtWidgets

虽然不算是什么错误

调整了一次ui文件之后程序的icon就显示不出来啊,

前期代码参考

博客园 IvanPc:
http://www.cnblogs.com/IvanPc/p/4835817.html
读像素点,分割逻辑和阈值部分进行了参考,但是读像素点的方法不够好,有空完善

图像文本转换

在机器学习模块使用SVM支持向量机,学习样本和测试数据都要将图像文件转换成32x32的文本。
以某字符为例:
image
具体实现在PYQT/pic2text.py中,生成的文本存储在txt_cache文件夹中。

手动输入阈值

在很多情况下使用自动阈值函数不是那么靠谱,这时需要使用者根据灰度值直方图手动输入阈值。
以乌云验证码为例:
image
自动返回的阈值为191,此时干扰部分仍然被保留,手动输入阈值范围:0~150
确认后点击载入阈值再次分割验证码
image
即可得到理想的分割效果。但是由于机器学习样本中没有储存相应的文本,
对于前四个字符判断全部出错,而储存了'M'字符后,虽然周围有干扰,依旧可以识别。

支持向量机

SVM,即支持向量机(support vector machine),是机器学习中常用的分类器,或算法。
理论非常高深啊,核函数各种看不懂,简单来说是将低维度的复杂问题转为高维度的简单问题从而解决 or 寻找某个分割的超平面。。(应该是吧)
在学习机器学习过程中实现过SVM,在这个程序中使用了sklearn中的svm,具体代码在UITest.py文件的
p2tTest和loadData函数中,其中loadData为svm加载学习样本,样本储存路径见代码。
学习结果在样本足够充足的情况下是比较乐观的,基本可以排除大部分干扰线情况。

部分图像处理截图

二值化实例图如下,这类是简单型验证码,直接使用函数返回灰度阈值即可
image
这类验证码识别、分割较难,或者根本无法进行分割操作
image image

空文件

简介

基于机器学习的验证码识别,使用支持向量机(SVM),添加学习样本后识别能力不错 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/rx_z/ImageRecognition.git
git@gitee.com:rx_z/ImageRecognition.git
rx_z
ImageRecognition
ImageRecognition
master

搜索帮助