背景

1.灰度化

将图片的RGB三通道的值变成单通道,用计算公式变成一个值,也就是单通道

2.二值化

将灰度化后的图片进一步处理,将图片所有的像素点的通道变成两种类型的值,比如设定一个阈值,灰度化之后的像素点的值小于这个阈值设为0,大于这个阈值255,一般作为特征向量设为0,1,显示就设为0,255,也可以是其他0-255之间的值,其中一个值为0

ps:一般识别轮廓不注重色彩可以进行灰度化和二值化,识别带色彩的图片不进行灰度化和二值化

3.示例代码

import tesserocr
from PIL import Imageimage = Image.open("./0.jpg")# 灰度化
image = image.convert("L")
image.show()# 默认阈值二值化
# image = image.convert("1")
# image.show()# 设定阈值二值化
threshold = 155
table = []
for i in range(256):if i < threshold:table.append(0)else:table.append(1)
image = image.point(table,'1')
image.show()
result = tesserocr.image_to_text(image)
print(result)
复制代码

示例代码2

import cv2
import os
import numpy as np
import copy
from PIL import Image
from PIL import ImageEnhance
from PIL import ImageFilterimage = Image.open('3.jpg')
pixdata = image.load()
out = image.convert('L')
# 灰度化
threshold = 45
table = []
for i in range(256):if i < threshold:table.append(0)else:table.append(1)
out = out.point(table, '1')
out.show()# 去除边框
widths = 1
w, h = out.size
pixdata2 = out.load()
for x in range(widths):for y in range(0, h):pixdata2[x, y] = 255
for x in range(w - widths, w):for y in range(0, h):pixdata2[x, y] = 255
for x in range(0, w):for y in range(0,widths):pixdata2[x, y] = 255
for x in range(0, w):for y in range(h-widths, h):pixdata2[x, y] = 255# 去除噪声
def del_noise(img, number):# height = img.shape[0]# width = img.shape[1]height, width = img.size# print(height,width)img_new = copy.deepcopy(img)# print(img_new)for i in range(1, height - 1):for j in range(1, width - 1):point = [[], [], []]count = 0point[0].append(img.getpixel((i - 1,j - 1)))point[0].append(img.getpixel((i - 1,j)))point[0].append(img.getpixel((i - 1,j + 1)))point[1].append(img.getpixel((i,j - 1)))point[1].append(img.getpixel((i,j)))point[1].append(img.getpixel((i,j + 1)))point[2].append(img.getpixel((i + 1,j - 1)))point[2].append(img.getpixel((i + 1,j)))point[2].append(img.getpixel((i + 1,j + 1)))for k in range(3):for z in range(3):if point[k][z] == 0:count += 1print(count)if count <= number:img_new.putpixel((i, j), 255)# img_new[i, j] = 1img_new.show()return img_newout = del_noise(out, 6)
# out.show()
复制代码

4.验证码

我们一般使用的验证码有两类,一类是区分人和机器的验证码,像你在问题发的那种,一类是验证个人身份的验证码,像手机短信验证码、语音验证码等等。

我们先来说区分人和机器的验证码。就像前面那个兄弟说的,主要是为了防止暴力破解。

可能对于人来说,知道你的一个帐号,一个一个去试你的密码是件很傻的事情。但是对于计算机来说,写一个程序去做这件事情简直太轻松了。计算机最擅长去做重复的事情。但计算机又是这个世界上最严重的脸盲症患者。那么,验证码的诞生就是为了对抗程序而诞生了。这也能解释为什么验证码一个个都扭曲的不行,人有时看起来都会很难识别。这都是为了恶心计算机程序呀。

可能你已经发现现在的验证码越来越难类,连正常人都会输错好几遍。

其实这主要是验证码破解技术也上来了,现在甚至用图像识别,机器学习等技术来识别破解验证码,所谓魔高一尺道高一丈,然后苦的是我们用户啊....

再来说另一类验证码,个人身份验证码。像手机短信验证码,手机语音验证码就是此类。

这类没什么好说的,只要你用的平台是安全稳定并且快捷的,就不会出现大问题。

但这类验证码的出现,还是带来了验证码短信轰炸这种问题。

图片处理和验证码识别相关推荐

  1. java 识别图片 边框_atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本...

    atitit.验证码识别step3----去除边框----图像处理类库 attilax总结java版本 1. 去除边框思路原理 图像裁剪::从图片的Positions.CENTER,wid,hit)裁 ...

  2. 基于python的验证码识别

    基于python的验证码识别 在利用python对一些网站进行批量操作的时候,验证码是个绕不过去的东西,虽然现在网上有很多图像识别的api,但是可能不适用于你的项目,我为了批量爬取班上同学的学分绩点写 ...

  3. 验证码识别---云打码

    这边采用云打码平台api 接口识别验证码图片,注意验证码识别正确率不是100% ,在项目中使用需做好处理 # -*- coding: utf-8 -*- import json import time ...

  4. [验证码识别技术]-初级的滑动式验证图片识别

    初级的滑动式验证图片识别方案 1 abstract 验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中.传统的字符型验证安全性已经名存实亡的情况下,各种新型的验证码如雨后 ...

  5. 字符识别Python实现 图片验证码识别

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  6. c++ 图片验证码识别_基于tensorflow 实现端到端的OCR:二代身份证号识别

    最近在研究OCR识别相关的东西,最终目标是能识别身份证上的所有中文汉字+数字,不过本文先设定一个小目标,先识别定长为18的身份证号,当然本文的思路也是可以复用来识别定长的验证码识别的. 本文实现思路主 ...

  7. eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  8. python 识别登陆验证码图片(完整代码)_python 识别登录验证码图片功能的实现代码(完整代码)...

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  9. 【成长笔记】图片验证码识别

    记得很早以前,我对如携程飞猪等第三方平台购买火车票不用输入验证码感到很--牛!百度后发现其可能是实现了自动打码,或者说机器自动识别验证码,我很好奇. 后来,当我觉得我必须要给自己找些有趣的知识来学习的 ...

  10. python识别图片中数字_Python图像处理之图片验证码识别

    在上一篇博客Python图像处理之图片文字识别(OCR)中我们介绍了在Python中如何利用Tesseract软件来识别图片中的英文与中文,本文将具体介绍如何在Python中利用Tesseract软件 ...

最新文章

  1. [Shell] 文件名截取的问题:bash .vs. csh
  2. redis常用API
  3. 漫画:大厂总提SaaS化部署,到底什么是IaaS、PaaS和SaaS?
  4. 第9天Sqltie数据库
  5. Traffic Light
  6. 1253 Dungeon Master
  7. 谷歌浏览器打开显示2345浏览器界面
  8. 《游戏学习》 java经典纸牌类小游戏《斗地主》源码
  9. 繁体中文和简体中文编码
  10. 2022互联网暑期实习笔面结果记录
  11. 2020秋季《大数据与物联网》期末答案参考
  12. 对毕业季即将踏入职场的年轻人的一点建议
  13. GoF设计模式学习笔记 第一回 Mediator
  14. Fbx文件解析(一)——FBX SDK for Windows环境配置
  15. .linux开发-服务器软件(12) 姚军权的服务器资料,还不错,很多关于iocp 与epoll
  16. ACPI电源管理中的S0 S1 S2 S3 S4 S5
  17. 谈谈小红书怎么引流减肥产品?让你轻松上热门变现
  18. Python基础篇(六)-- 类和对象
  19. 电流镜电流--第10学时
  20. 【成立公司】5.营业执照和组织机构代码证

热门文章

  1. http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html
  2. cxf与struts2拦截器冲突的解决方案
  3. ASP.NET前端解决方案之一:Ext.Net入门随笔1
  4. mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理...
  5. Python 学习随笔
  6. (十二)random模块
  7. 34.Odoo产品分析 (四) – 工具板块(5) – 设备及联系人目录(1)
  8. 如何查看Dell服务器前面板LCD的报错资讯
  9. RecyclerView,ListView,GridView等UI控件使用及其优化和图片错位--
  10. How to convert any valid date string to a DateTime.