当前位置: 首页 > news >正文

python识别验证码+灰度图片base64转换图片

一、为后面识别验证码准备

1、base64转换为图片,保存本地、并且置灰

在这里插入图片描述
在这里插入图片描述

上文中的base64,后面的就是包含Base64编码的PNG图像的字符串复制下来

import base64
from PIL import Image
import io# 这里是你的Base64编码的字符串
base64_data = "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"# 解码Base64数据为二进制
image_data = base64.b64decode(base64_data)# 将二进制数据转换为图片
with Image.open(io.BytesIO(image_data)) as img:# img.show() image展示# 保存图片到本地img.save("decoded_image.png", "PNG")# 变成灰色图gray_img = img.convert('L')gray_img.show()

2、二值化图片

import base64from PIL import Image
import io# 这里是你的Base64编码的字符串
base64_data = "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"# 解码Base64数据为二进制
image_data = base64.b64decode(base64_data)# 将二进制数据转换为图片
with Image.open(io.BytesIO(image_data)) as im:img = im.convert('L')pixels = img.load()for x in range(img.width):for y in range(img.height):# 可以适当调大这个200if pixels[x, y] > 200:pixels[x, y] = 255else:pixels[x, y] = 0img.show()

3、图片转存内存中

import base64
from PIL import Image
import io
import ddddocr
# 这里是你的Base64编码的字符串
base64_data = "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"# 解码Base64数据为二进制
image_data = base64.b64decode(base64_data)# 将二进制数据转换为图片
img = Image.open(io.BytesIO(image_data))# img.show() image展示# 变成灰色图
gray_img = img.convert('L')
# 讲图片存在内存中二进制
buffered = io.BytesIO()
gray_img.save(buffered, format="JPEG")  # 可以根据需要调整格式
gray_image_binary = buffered.getvalue()

二、识别图片上内容(ddddocr库)

由于本人python版本问题pip出现了 就不进行验证了
在这里插入图片描述
链接

相关文章:

python识别验证码+灰度图片base64转换图片

一、为后面识别验证码准备 1、base64转换为图片,保存本地、并且置灰 上文中的base64,后面的就是包含Base64编码的PNG图像的字符串复制下来 import base64 from PIL import Image import io# 这里是你的Base64编码的字符串 base64_data "iVBORw0KGgoAAAANSUhE…...

TF-IDF(Term Frequency-Inverse Document Frequency)算法 简介

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索和文本挖掘的常用算法。它用于评估一个词对于一个文档集合中某个文档的重要性。 这个算法的基本思想是:如果一个词在一个文档中频繁出现,并且在整个文档集合…...

企业怎么打造私域转化闭环?

一、私域矩阵构建 1、公众号 (1)流量来源:微信公众号既是私域流量的起点,亦为其源源不断的提供流量支持; (2)内容展示:公众号作为内容发布的主要渠道,可以通过公众号传…...

基于等保合规和滑动标尺模型的云安全建设方法

文章目录 前言一、云计算平台面临的安全挑战(一)新兴风险和传统风险的冲击(二) 云计算安全日益严峻,面临更大的安全挑战(三)提升对云计算平台的全面系统性安全建设的认知二、在云计算安全建设上的误区(一)缺乏整体视角构建云上安全,安全及运营存在割裂(二) 缺乏云内…...

MySQL数据库期末知识点总结(复习版)

一、数据库基本知识 数据库中的数据有什么特点 1、数据是按某种结构组织的 2、数据有整体性、共享性和较高的独立性 数据管理技术经历了哪三个阶段 1、手工管理 2、文件管理 3、数据库管理 数据库管理系统的主要功能有哪些 数据库管理系统的主要功能包括数据定义、数据…...

流行的Jmeter+Ant+Jenkins接口自动化测试框架在网络上走红

大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件;Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具。将这三者结合起来可以搭建一套We…...

MySQL 数据页损坏处理思路

文章目录 前言1. 备份恢复2. 强制 InnoDB 恢复2.1 损坏数据页2.2 观察错误日志2.3 设置参数2.4 定位表信息2.5 分析处理2.6 恢复数据 总结 前言 研发自己搭建了一套 MySQL 没有设置双一参数,机房异常断电,导致数据页出现损坏,本篇文章介绍此…...

面试 Vue 框架八股文十问十答第二期

面试 Vue 框架八股文十问十答第二期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)常见的事件修饰符及其作…...

【Python学习】2024PyCharm插件推荐

目录 【Python学习】2024PyCharm插件推荐 1. Key Promoter X2.Rainbow CSV3.Markdown4.Rainbow Brackets5.Indent Rainbow6.Regex Tester7.Regex Tester8.Background Image Plus9.Material Theme UI10. Chinese 汉化插件参考 文章所属专区 Python学习 1. Key Promoter X 方便…...

剑指offer题解合集——Week2day6

文章目录 剑指offerWeek2周六:表示数值的字符串AC代码思路: 周六:调整数组顺序使奇数位于偶数前面AC代码思路: 剑指offerWeek2 周六:表示数值的字符串 题目链接:表示数值的字符串 请实现一个函数用来判…...

算法训练第五十二天|300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300. 最长递增子序列: 题目链接 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组…...

HTTP基础知识总结

目录 一、什么是HTTP? 二、与HTTP有关的协议 三、HTTP请求特征 四、HTTP组成格式 五、HTTP标头 1.通用标头 2.实体标头 3.请求标头 4.响应标头 六、HTTP状态码分类 我们在日常测试过程中,也可以通过浏览器F12简单定位是前端问题还是后端问题&a…...

创意与技术的结晶:AI魔法绘图与中文描述的完美结合

在人类文明的长河中,创意与技术一直是推动发展的重要动力。随着科技的日新月异,人工智能(AI)在创意领域的应用逐渐崭露头角,而AI魔法绘图与中文描述的结合,更是将这一趋势推向了新的高度。AI魔法绘图是一种…...

Python:int(value, base=10)

int(value, base2) 是 Python 中的一个内置函数,用于将一个字符串或数字以指定的进制转换为整数。 函数的参数含义如下: value:要进行转换的值,可以是一个字符串或数字。base:进制数,默认为 10&#xff0…...

Vue之调用store的action(包含getter调用)

文章目录 Vue之调用store的action(包含getter调用)调用store的action方法一:Promise 链式调用方法二:async/await方法三:Promise.all()同时执行 调用store的getter方法一:this.$store.getters调用方法二:mapGetters调用…...

蟹目标检测数据集VOC格式400张

蟹,一种独特的海洋生物,以其强壮的身体和独特的生活习性而闻名。 蟹的身体宽厚,有一对锐利的大钳子,这使得它们在寻找食物和保护自己时非常有力。蟹的外观颜色多样,有绿色、蓝色、棕色和红色等,这使得它们在…...

PyTorch中常用的工具(4)Visdom

文章目录 前言3.2 Visdom 前言 在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。 由于内容较多,本文分成了五篇文…...

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…...

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标&a…...

2023年工作初体验

23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...