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࿰…...
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平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...

中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
中科院1区顶刊|IF14:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点 当下,免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入,我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...