python验证码滑块图像识别

news2024/11/26 8:57:48

文章目录

  • 1、案例图片
  • 1、需求说明
  • 2、代码实现
  • 总结


1、案例图片

在这里插入图片描述

1、需求说明

python 3.10,写一个滑块验证码的自动化程序。需要一个opencv的函数,能准确的计算,在这同一张图片上,滑块形状和缺口形状的坐标位置及两个形状之间在X轴上的距离。请注意,没有单独的滑块图片,而是滑块和缺口都在同一张图片上,没有分开,补充:并不存在滑块和背景两张图,滑块和缺口都在一张图上。不能用额外的滑块图片匹配,而是要在一张图上,找出两个形状一样的图,并计算坐标距离。

2、代码实现

import cv2
import numpy as np
 
def find_slider_and_gap(image_path):
    # 读取图片
    image = cv2.imread(image_path)
    if image is None:
        raise ValueError("Image not found or unable to read")
 
    # 转换为灰度图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
    # 使用高斯模糊减少噪声
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
 
    # 使用Canny边缘检测
    edges = cv2.Canny(blurred, 50, 150)
 
    # 使用轮廓检测找到滑块和缺口
    contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 
    # 找到最大的两个轮廓(假设滑块和缺口是最明显的两个轮廓)
    contours = sorted(contours, key=cv2.contourArea, reverse=True)[:2]
 
    if len(contours) < 2:
        raise ValueError("Not enough contours found")
 
    # 计算轮廓的边界框
    slider_box = cv2.boundingRect(contours[0])
    gap_box = cv2.boundingRect(contours[1])
 
    # 计算滑块和缺口的中心点
    slider_center = (slider_box[0] + slider_box[2] // 2, slider_box[1] + slider_box[3] // 2)
    gap_center = (gap_box[0] + gap_box[2] // 2, gap_box[1] + gap_box[3] // 2)
 
    # 计算滑块和缺口在X轴上的距离
    distance_x = abs(slider_center[0] - gap_center[0])
 
    # 绘制边界框和中心点
    cv2.rectangle(image, slider_box, (0, 255, 0), 2)
    cv2.rectangle(image, gap_box, (0, 0, 255), 2)
    cv2.circle(image, slider_center, 5, (0, 255, 0), -1)
    cv2.circle(image, gap_center, 5, (0, 0, 255), -1)
 
    # 显示结果图像
    cv2.imshow('Result', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
 
    return slider_center, gap_center, distance_x
 
# 示例使用
image_path = 'path_to_your_image.png'
slider_center, gap_center, distance_x = find_slider_and_gap(image_path)
print(f"滑块中心坐标: {slider_center}")
print(f"缺口中心坐标: {gap_center}")
print(f"滑块和缺口在X轴上的距离: {distance_x}")
 

总结

这是我在社区问答中看到的一个问题,本人给出了回答,也很荣幸被题主采纳,这里再次记录一下,希望更多人看到。

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

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

相关文章

Spring AI 核心概念

SpringAI 核心概念 1. Models2. Prompts3. Prompt Templates4. Embeddings5. Tokens6. Structured Output7. Bringing Your Data & APIs to the AI Model7.1 Retrieval Augmented Generation7.2 Function Calling 1. Models AI 模型是用于处理和生成信息的算法&#xff0c…

从0开始学习Linux——文本编辑器

往期目录&#xff1a; 1、从0开始学习Linux——Linux简介&安装 2、从0开始学习Linux——搭建属于自己的Linux系统 我们通过前面教程的学习已经了解了什么是Linux&#xff0c;并且我们也定制安装了属于我们自己的一个Linux系统。从这个章节开始我们将开始学习如何去操作Linu…

外包干了三年,精神严重内耗。。。

前段时间我同事&#xff08;做测试的一个妹子&#xff09;跟我讲&#xff0c;感觉早上起来十分的疲惫&#xff0c;不想上班&#xff0c;问我们这是什么样的现象&#xff0c;其实有时候我也有这种感觉&#xff0c;虽然我卷&#xff0c;但我也是肉体凡胎啊&#xff01;不是机器人…

华宇TAS应用中间件入围鲲鹏应用创新大赛2024全国总决赛

近日&#xff0c;鲲鹏应用创新大赛2024全国总决赛入围名单出炉。华宇TAS应用中间件经过区域赛、半决赛一路披荆斩棘&#xff0c;在众多优秀的解决方案中脱颖而出&#xff0c;成功入围全国总决赛。 这也表明华宇TAS应用中间件在方案创新性、技术领先性、商业前景、社会价值等方…

惊爆!内容创业新纪元:AI工作流助你打造自媒体帝国!

又是一个研究AI工作流的深夜。看着扣子商店里各种神奇的智能体,我不禁感叹技术的魔力。一个简单的工作流模板,居然能把过去需要一整天才能完成的工作,压缩到几分钟… 扣子模板 大家好,我是momo,一个专注教人使用AI工作流做自媒体的创业者。今天想和你分享一个能让内容创作效率…

史上最大应用层DDoS攻击 H2 Rapid Reset攻击研究

前言 2023年10月Cloudflare、Google、AWS等厂商公布了一种利用HTTP/2快速重置进行应用层DDoS攻击的0day漏洞(CVE-2023-44487)[1][2]&#xff0c;即H2 Rapid Reset DDoS。Google宣传其监控到此种攻击峰值超过每秒3.98亿个请求&#xff0c;打破互联网历史最大应用层DDoS攻击记录…

饱和限幅器MATLAB和CODESYS平台下的实现

1、博途PLC限幅器(SCL代码) 博途PLC限幅器(SCL代码)-CSDN博客文章浏览阅读182次。本文详细介绍了博途PLC的限幅器功能,包括饱和限幅器的概念,并提供了完整的SCL编程代码示例,帮助读者理解和应用PLC限幅器。https://rxxw-control.blog.csdn.net/article/details/136029196 …

在 CSS 中,gap 是 布局容器(flex 或 grid)的属性。它用于设置容器内子元素之间的间距。

在 CSS 中&#xff0c;gap 是 布局容器&#xff08;flex 或 grid&#xff09;的属性。它用于设置容器内子元素之间的间距。以下是 gap 属性在不同布局中的应用&#xff1a; 1. 在 CSS Grid 布局中 gap 定义了网格行和列之间的间距。可以分别使用 row-gap 和 column-gap 设置行…

JavaWeb项目-----博客系统

一.设计数据库 1.创建数据库 create database if not exists java108_blog_system character set utf8; drop table if exists user; drop table if exists blog;2.创建博客列表 create table blog(blogId int primary key auto_increment,title varchar(20),content varcha…

一文读懂:AIOps 从自动化运维到智能化运维

今天跟大家聊一聊AIOps&#xff08;人工智能运维&#xff09; 为了应对企业面临着日益复杂的运营挑战&#xff0c;AIOps&#xff08;人工智能运维&#xff09;作为一种创新的方法应运而生&#xff0c;结合了人工智能和机器学习技术&#xff0c;来提升IT运营的效率和性能。 这…

从0开始学习Linux——文件目录

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 上期教程我们学习了如何使用远程连接工具去连接Linux系统&#xff0…

C++入门基础知识140—【关于C++ 类构造函数 析构函数】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 类构造函数 & 析构函数的相关内容…

MSC“名实之辩”:精准鉴定只为精准治疗

前 言 MSC是一群来源广泛、能够体外增殖分化的异质性细胞。MSC具有免疫调节、促进组织修复等作用&#xff0c;应用于多种疾病的治疗。由于科学进程、习惯等原因&#xff0c;MSC具有多种名称。自先秦以来&#xff0c;就有“名实之辩”&#xff0c;今日我们就讲一讲MSC的名称与…

零基础 Vue 入门:个人主页完整示例教程” “Vue 实战:构建简洁美观的个人主页界面” “从零开始使用 Vue 构建个人主页,包含详细代码解析”

效果图 博客教程&#xff1a;使用 Vue 构建简易个人主页界面 目录 前言项目结构和准备HTML 与 CSS 布局Vue 数据绑定和渲染功能实现总结 前言 本教程将带你逐步使用 Vue.js 创建一个简易的“个人主页”界面。通过学习该项目&#xff0c;你将掌握 Vue 的基本数据绑定、指令的…

(二)基于Bayes方法的道路分割

一、实验目的 1、实验目标 学习掌握Bayes定理&#xff08;Bayes Theorem&#xff09;的基本原理及推导过程&#xff0c;以及公式中的先验概率、条件概率、后验概率、相似度等概念。在MATLAB的概率分布函数基础上&#xff0c;通过编写程序&#xff0c;实现图像块内结果统计和序…

从新手到专家:7款电脑平面设计软件评测

平面设计在时尚、广告等多个领域扮演着重要角色&#xff0c;而创作出独特且富有创意的设计作品则需要依赖优秀的电脑平面设计软件。市场上的电脑平面设计软件众多&#xff0c;每款软件都有其独到之处。本文将为你推荐几款值得关注的电脑平面设计软件&#xff0c;并分析它们的特…

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本&#xff0c;列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令&#xff1a; pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法 试过网上其他方法&#xff0c;发现表单清空数据还是有问题&#xff0c;索性用下面方法解决: // 给弹框里面添加 v-ifvisible测试无问题&#xff0c;暂时先这样解决&#xff0c;如果有其他方法&#x…

计算机网络——路由器构成

算路由表是分布式去算——你算你的&#xff0c;我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题

PMP–一、二、三模、冲刺–分类–7.成本管理–技巧–挣值分析

文章目录 技巧一模7.成本管理--4.控制成本--数据分析--挣值分析--进度绩效指数&#xff08;SPI&#xff09;是测量进度效率的一种指标&#xff0c;表示为挣值与计划价值之比&#xff0c;反映了项目团队完成工作的效率。 当 SPI小于 1.0 时&#xff0c;说明已完成的工作量未达到…