京东图标点选验证码识别代码

news2024/9/20 18:49:14

 

如上图所示,京东会让你根据小图中的图案,在大图中点击对应的图标。

识别代码如下:

需要两张图片,可以是原图2张,或者是截图2张。运行下面代码可以看到点击的位置。

import base64
import requests
import datetime
import numpy as np
from io import BytesIO
from PIL import Image,ImageDraw,ImageFont

t1 = datetime.datetime.now()

#PIL图片保存为base64编码
def PIL_base64(img, coding='utf-8'):
    img_format = img.format
    if img_format == None:
        img_format = 'JPEG'

    format_str = 'JPEG'
    if 'png' == img_format.lower():
        format_str = 'PNG'
    if 'gif' == img_format.lower():
        format_str = 'gif'

    if img.mode == "P":
        img = img.convert('RGB')
    if img.mode == "RGBA":
        format_str = 'PNG'
        img_format = 'PNG'

    output_buffer = BytesIO()
    # img.save(output_buffer, format=format_str)
    img.save(output_buffer, quality=100, format=format_str)
    byte_data = output_buffer.getvalue()
    base64_str = 'data:image/' + img_format.lower() + ';base64,' + base64.b64encode(byte_data).decode(coding)

    return base64_str

# 旋转图片
def rotate_img(img, angle):
    # 转换为有alpha层
    temp_img2 = img.convert('RGBA')
    # 旋转
    rot = temp_img2.rotate(-angle)
    # 创建一个与旋转图像大小相同的白色图像
    fff = Image.new('RGBA', rot.size, (255, 255, 255, 0))
    # 使用alpha层的rot作为掩码创建一个复合图像
    out = Image.composite(rot, fff, rot)
    # 将临时图片转换为元素图片颜色模式
    temp_img2 = out.convert(img.mode)

    return temp_img2

# 加载外圈大图
img1 = Image.open(r'E:\Python\lixin_project\OpenAPI接口测试\test_img\59-1.jpg')
# 图片转base64
img1_base64 = PIL_base64(img1)
# 加载内圈小图
img2 = Image.open(r'E:\Python\lixin_project\OpenAPI接口测试\test_img\59-2.jpg')
# 图片转base64
img2_base64 = PIL_base64(img2)

# 验证码识别接口
url = "https://www.detayun.cn/openapi/verify_code_identify/"
data = {
    # 用户的key
    "key":"EI4vT8UGFTXRE4hZR7cE",
    # 验证码类型
    "verify_idf_id":"59",
    # 外圈大图
    "img1":img1_base64,
    # 内圈小图
    "img2":img2_base64,
}
header = {"Content-Type": "application/json"}
# 发送请求调用接口
response = requests.post(url=url, json=data, headers=header)

# 获取响应数据,识别结果
print(response.text)
print("耗时:", datetime.datetime.now() - t1)

# 标记识别结果
draw = ImageDraw.Draw(img1)
# 字体设置
font_type = "./msyhl.ttc"
font_size = 20
font = ImageFont.truetype(font_type, font_size)
# 获取结果列表
y = response.json()['data']['res_str']
point_list = eval(y)
# 标记点击序号
for i, point in enumerate(point_list):
    draw.ellipse((point[0] - 15, point[1] - 15,point[0] + 15, point[1] + 15), fill=(255, 0, 0))
    draw.text((point[0] - 5, point[1] - 15), str(i + 1), fill=(255, 255, 255), font=font)

img1.show()

识别效果图

想了解更多验证码识别,请访问:得塔云

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

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

相关文章

python-新冠病毒

题目描述 假设我们掌握了特定时间段内特定城市的新冠病毒感染病例的信息。在排名 i 的当天有 i 个案例,即: 第一天有一例感染第二天有两例感染第三天有三例感染以此类推...... 请计算 n 天内的感染总数和每天平均感染数。 输入 整数 n 表示天数&…

【脊线图】:附Origin详细画图流程

目录 No.1 理解脊线图 No.2 画图流程 1 导入数据,绘制图形 2 设置绘图细节 3 设置颜色标尺并进行色阶控制 4 设置坐标轴 5 效果图 No.1 理解脊线图 脊线图,在统计学和数据分析领域,是一种高级且专业的可视化工具,用于展示…

如何摸透大模型?看完《实战AI大模型》你算是懂了!

今天,人工智能技术的快速发展和广泛应用已经引起了大众的关注和兴趣,它不仅成为技术发展的核心驱动力,更是推动着社会生活的全方位变革。特别是作为AI重要分支的深度学习,通过不断刷新的表现力已引领并定义了一场科技革命。大型深…

酸奶刺客打折,瑜伽裤冲锋衣熄火…中产消费正全线崩溃?

如果把消费市场这两个月的热搜放在一起看,你会发现中产好像越来越抠了,消费市场的天要变了……‍‍‍‍‍‍ 比如几十块钱一支的钟薛高降价降到几块钱也没多少人买了,创始人更是放下身段,直播卖起了红薯……‍ 还有前不久冲上热搜…

1比25万基础电子地图(辽宁版)

我们为你分享过四川、云南、江西、贵州、重庆、青海、西藏、新疆、甘肃、黑龙江、吉林、湖北、内蒙古、广东、广西、浙江、河南、湖南、宁夏、山西、陕西、天津、山东、河北、江苏和福建的1比25万基础电子地图,现在再为你分享辽宁版的电子地图。 如果你需要这些省份…

哈希表的底层实现(2)---C++版

目录 链地址法Separate Chaining——哈希桶的模拟实现 超大重点分析: 两种方法对比 由于在上次的哈希表的底层实现(1)---C版已经详细的阐述了相关的结构和原理,哈希表的实现方法主要分为链地址法和开放定址法。开放定址法上次已经实现过了&#xff0c…

MySQL record 04 part

高级查询: order by 对查询结果排序, 注意,使用order by的时候,如果某条记录的order by 指定的字段值是 null,那么包含 null 的这条记录会排在第一位,因为 null 被认为是最小值。 group by 对字段的值进行…

【系统分析师】-软件设计

目录 1、概要设计 1)层次图(H图) 2)HIPO图 2、详细设计 1)流程图 2)盒图(N-S图) 3)PAD 问题分析图 4)PDL伪代码图 3、软件设计过程 4、软件设计活动…

MQTT工业网关的工作原理及其在实际生产中的重要作用

在智能制造与工业4.0的浪潮中,MQTT工业网关作为连接传统工业设备与现代物联网技术的桥梁,正发挥着不可或缺的作用。MQTT协议以其轻量级、开放性和可靠性,在工业物联网领域得到了广泛应用。本文将通过一个实际应用案例,解析MQTT工业…

网络安全工程师填补人才缺口

近年来,新兴技术如人工智能、5G和量子信息技术等的迅猛发展,极大地推动了互联网技术的革新。 然而,随之而来的网络安全威胁也日益增多,对国家、企业及个人安全构成了严重挑战。 网络安全问题就在我们身边,因此&#…

关于电影票api接口你了解多少?

电影票API接口是连接第三方平台与电影院票务系统的一种技术手段,它允许第三方应用程序如网站、移动应用或小程序集成电影票购买服务。通过API,用户可以在第三方平台上查询电影信息、影院排期、选择座位并完成购票支付。 电影票API接口的主要功能通常包括…

智能头盔语音识别声控芯片,AI离线语音识别ic方案,NRK3301

头盔是交通事故中保护电动车车主安全的最后一道屏障。为了增加骑行用户的安全保护,改善骑行用户的出行体验,让用户从被动使用头盔到主动佩戴头盔,头盔厂家与九芯电子合作,推出了语音智能头盔,它具备首家骑行专用的智能…

关于SpringBoot项目yml配置数据库、redis、mq等中间件的用户密码敏感信息加密问题的解决方案

一、问题描述 一般情况下,yml里边的配置信息 都是在项目部署时动态管理的,一般不存在泄密或者不安全的情况,但是,不凡有一些脑袋有泡的客户,要对你项目源码进行安全性检测。故提供如下解决方案: 二、关于中间件Redis、MQ等对用户名或密码进行加密。 一般可在其对应的配…

【.NET 8 实战--孢子记账--从单体到微服务】--用户(登录/注册/Token)

从这篇文章开始,我们就进入到了项目开发阶段。我们的项目是面向用户的,因此我们首先要做的是和用户相关的逻辑代码。 一、需求 首先,我们来看一下服务端的需求: 编号需求标题需求内容1登录传入参数用户名、密码和验证码&#x…

国内PMP可以在线考试?

1. PMP考试的两种类型 PMP考试分为两种类型:一种是在线机考,另一种是线下笔试。国外采用机考形式,可以随时参加考试,除了节假日;而国内由中国国际人才交流基金会和PMI共同组织,因此是线下笔试。 虽然线上…

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd zadd key [NX |…

【计算机方向】中科院二区宝刊!国人发文友好,晋升从此不是梦!

期刊解析 🚩本 期 期 刊 看 点 🚩 国人发文占比第一,审稿友好 审稿速度快 自引率5.7% 今天小编带来计算机领域SCI快刊的解读! 如有相关领域作者有意投稿,可作为重点关注! 01 期刊信息✦ 期刊名称&…

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环…

python binning data openAI gym

题意:Python 数据分箱 OpenAI Gym 问题背景: I am attempting to create a custom environment for reinforcement learning with openAI gym. I need to represent all possible values that the environment will see in a variable called observati…

11.Java基础概念-ArrayList

欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words! ArrayList是Java中的一…