图像处理:给验证码图片做降噪处理及数据清洗

上一篇博文:https://blog.csdn.net/qq_40962368/article/details/89312429

图像处理:给验证码图片做降噪处理及数据清洗

在上一篇博文中,tesseract对验证码识别的准确率还是非常低的,改进措施的话,可以从三个方面来考虑:

  • 1、数据的来源

        数据的质量还是非常影响识别的精确度的,验证码图片中含有很多的噪声,会影响tesseract对图片的判断,所以要对图片进行降噪处理。

  • 2、识别模型或者方法

        模型的好坏将直接决定结果的好坏,但这里是的在模型确定的情况下考虑其他方法,所以,不予考虑。

  • 3、对结果的清洗

        图片中只含有四位数字跟小写字母的组合,不含有特殊字符,以及空格,所以对识别出来的结果进行清洗,可以减少不必要的错误。

一、降噪处理

分别用高斯滤波、中值滤波和双边滤波对图像进行降噪处理,并不断调整参数,确定出对应方法的最优参数;

降噪方法准确率
0.14
高斯滤波0.11
中值滤波0.15
双边滤波0.28

可以看到,利用双边滤波函数进行的处理,效果较好,识别的精度提高了两倍;

blur = cv2.GaussianBlur(img, (3, 3), 0)  # 高斯滤波函数
blur = cv2.medianBlur(img, 3)  # 中值滤波函数
blur = cv2.bilateralFilter(img, 3, 560, 560)  # 双边滤波函数 

二、数据清洗

在双边滤波降噪处理的基础上再对识别结果进行数据清洗,将会提高识别的准确率;

# 对结果的处理
st = re.sub(r'[^A-Za-z0-9]+', '', a)
st = st.lower()
if len(st) > 4:b = st[-4:]
else:b = st

最终识别的结果的准确率为0.53

三、代码

import pytesseract
import cv2
import os
import numpy as np
import re
path = './verify_pictures/'file_name = []
for k in os.walk(path):file_name = k[-1]print('识别值' + '-----' + '真实值')
num = 0
for i in file_name:img = cv2.imdecode(np.fromfile(path + i, dtype=np.uint8), 1)# 对数据的处理# blur = cv2.GaussianBlur(img, (3, 3), 0)  # 高斯滤波函数# blur = cv2.medianBlur(img, 3)  # 中值滤波函数blur = cv2.bilateralFilter(img, 3, 560, 560)  # 双边滤波函数 560:0.28a = pytesseract.image_to_string(blur)# 对结果的处理st = re.sub(r'[^A-Za-z0-9]+', '', a)st = st.lower()if len(st) > 4:b = st[-4:]else:b = sttrue_value = i[-8:-4]print(b + '-----' + true_value)if b == true_value:num += 1print('识别的准确率为:' + str(num/100))

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

X-Brain:如此美丽可爱的大脑工作原理

这个帖子很好地提醒了我,为什么我愿意跟如此美丽可爱的大脑一起工作。因为真正的大脑非常不可爱,长得也难看。我们从外往里看吧。生物学有时似乎非常让人满意,比如你的头上有一个真正的俄罗斯套娃。你有头发,然后是头皮&#xff0…

SpringMVC注解@RequestParam全面解析

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解RequestParam直接获取。这里主要讲这个注解 一、基本使用,获取提交的参数 后端代码: Java代码 RequestMapping(…

MATLAB(六)数据处理

一、Matlab中的默认数据文件mat文件 例1、把Matlab工作空间中的数据矩阵a、b、c保存到数据文件data1.mat中。 >> a [1, 2, 3] a 1 2 3 >> b [4, 5, 6] b 4 5 6 >> c [7, 8, 9] c 7 8 9 >> save data1 a b c 例2、把例1生…

java怎么安装_Windows、Linux、Mac下安装JDK

前言在知乎上看到很多童鞋在学Java的时候,因为安装jdk时没有正确的配置,会遇到很多问题。所以决定今天写一下jdk在Windows、Mac、Linux下都怎么安装。下载JDK“巧妇难为无米之炊”,所以首先我们要去Oracle官网上下载jdk,Java8下载…

200年历史的神经科学难题,取得重大突破

图片来源:Diogo Matias,Champalimaud基金会来源:中国生物技术网北京时间8月13日,发表在《Nature Neuroscience》上的一项研究,来自葡萄牙里斯本Champalimaud未知中心的研究团队解决了一个长达200年历史的神经科学难题。…

关系数据库SQL之可编程性触发器

前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数、存储过程、事务,本文来介绍一下触发器的使用。(还是以前面的银行系统为例) 概…

图像处理:图像特效之油画效果

利用OpenCVpython对图片进行处理产生油画的效果 算法可以分为五步: 1、获取图像的灰度(gray)图片2、设计一个小方框(4x4 or 8x8 or 10x10等),统计每个小方框的像素值3、将0-255的灰度值划分成几个等级,并把第二步处理…

socket模拟http的登陆_python模拟登陆知乎(最新版)

为啥要写这一篇文章呢?(主要是qq群内有人在模拟登陆知乎,一直不成功)然后我抓包看了下,发现知乎登陆页已经改版了,而且难度大大提高了。开始抓包首先内,还是打开知乎首页,然后输入账…

图像识别:利用KNN实现手写数字识别(mnist数据集)

图像识别:利用KNN实现手写数字识别(mnist数据集) 步骤: 1、数据的加载(trainSize和testSize不要设置的太大) 2、k值的设定(不宜过大) 3、KNN的核心:距离的计算 4、k个最近…

一个与生命起源有关的悖论终于得到了解决

来源:原理当Caitlin Cornell低头看显微镜时,她看见黑色的背景下浮现出一些大大的明亮斑点。它们就像微缩的太阳,在深色的太空幕布下闪耀着光芒。Conell回忆起把这些斑点展示给她的导师Sarah Keller时的兴奋,那时她们意识到&#x…

python ffmpy3与FFmpeg的安装

python ffmpy3与FFmpeg的安装 安装命令: pip install ffmpy3 去官网下载FFmpeg,根据自身电脑版本下载相应安装包 http://ffmpeg.org/download.html from ffmpy3 import FFmpeg ff FFmpeg(inputs{test.mp4: None},outputs{output.ts: None}) print(f…

千兆网线8根线定义图_家中的网线断裂/不够长,如何接线才最合适?

网线作为互联网时代不可或缺的主角,更是家装布线和工程施工中的常客。网线相对来说是很脆弱的,特别是一些质量一般的网线,在很多情况下都可能会被弄断,比如老鼠咬、过度拉伸、摆在地下人踩的人多了、电起火烧断、不小心被夹断等等…

中国决定以“六大政策”推动新一代人工智能发展

来源:智造智库以新一代人工智能为代表的新一轮科技革命和产业变革已经呈现出强大的影响力和生命力,人工智能技术对生产、流通、消费等形成高度渗透、跨界融合,新业态、新模式不断涌现,给以往的产业生态、社会分工、行业和企业边界…

第三次站立会议

项目进展:项目主体开始实施,我们在前期分工准备的同时开始讨论连连看的具体式样,开始上网参考其他项目的式样,搜集图片素材,为具有我们特色的连连看项目做准备。 存在问题:搜集素材时组员对项目的风格式样见…

ffmpy3与ffmpeg的简单使用

安装 python ffmpy3与ffmpeg的安装 https://blog.csdn.net/qq_40962368/article/details/90748852 ffmpy3的介绍: https://ffmpy3.readthedocs.io/en/latest/ ffmpy3是一个用于FFmpeg的Python包装器,最初是从ffmpy项目派生出来的。它根据提供的参数及…

5G将改变技术格局的8个原因(上)

来源:CESAsia5G是引领第四次工业革命的通用技术。为了说明5G如何推动技术创新的飞跃,威讯(Verizon)首席执行官卫翰思(Hans Vestberg)在2019年国际消费电子产品展(CES 2019)主题演讲中罗列了5G所带来的八项有可能改变世界的能力。通用能力1和2&#xff1a…

matlab频谱分析_罗德与施瓦茨两款新的信号和频谱分析仪 具有多种频率型号

射频元器件、发射机和模组的制造商正面临着复杂的宽带射频信号测量任务和严苛的上市时间要求。特别是随着5G NR技术的进步,工程师在研发和生产中需要使用支持5G带宽和RF需求的测试解决方案分析无线通信信号。罗德与施瓦茨的新型中档信号和频谱分析仪R&SFSV3000和…

ArcEngine一些代码实现(转载)

转自:http://xitong.iteye.com/blog/1715759 ArcEngine 一些实现代码 ●● 目录: A1 …………实现:鼠标滑过显示要素 tip A2 …………实现:通过鼠标选择要素并高亮显示(ISelectionEnvironment) A3 ……………

tensorboard可视化经常出现的两个问题

tensorboard经常出现的两个问题 TensorFlow经常使用tf.summary.FileWriter("路径", sess.graph)函数将训练的图信息保存到日志中 使用TensorBoard读取读取并展示日志,使用如下语句: tensorboard --logdir日志所在路径 一、OSError: [Errn…

从电报到5G,细说60年移动通信史的7个变革

来源:司南物联今天,我们不止介绍5G,还要给大家介绍通信史这60多年来的趣事。电话“发明者”贝尔居然是小偷?早在1871年,意大利人安东尼奥梅乌奇就开始为自己的Teletrofono电话系统去申请专利,他花10美元买了…