python3 使用OpenCV计算滑块拼图验证码缺口位置(场景示例)

  1. 简要介绍OpenCV

OpenCV是一款功能强大的开源计算机视觉库,它可以处理图像和视频数据,支持多种编程语言,在数字图像处理、计算机视觉和机器学习等领域都有广泛应用。

  1. 准备工作

使用Python3,需要先安装OpenCV和Requests库。

pip install opencv-python
pip install requests
  1. 获取验证码图片和缺口图片

为了演示方便,我们可以使用“极验”公司的滑块验证码作为例子。访问https://www.geetest.com/demo/slide 下载demo的验证码图片和缺口图片。分别命名为captcha.jpg和gap.jpg并放到代码目录下。

  1. 分析验证码图片

利用OpenCV将图片转换成灰度图,再进行二值化处理,最终得到黑白图片。可以使用threshold函数实现。具体代码如下:

import cv2

img = cv2.imread('captcha.jpg',0) #读取灰度彩色图像
ret,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY) #二值化处理
cv2.imwrite('captcha_binary.jpg', thresh) #保存二值化后的图片
  1. 获取缺口位置

首先需要对缺口图片进行二值化处理,然后使用matchTemplate函数在验证码图片中寻找最佳匹配的位置。该函数返回一个灰度图像,其中亮度表示匹配程度。最后我们可以使用minMaxLoc函数获取最佳匹配位置的坐标。

import cv2
import numpy as np

captcha = cv2.imread('captcha_binary.jpg',0)
gap = cv2.imread('gap.jpg',0)

res = cv2.matchTemplate(captcha,gap,cv2.TM_CCOEFF_NORMED)
threshold = 0.7
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):
    print(pt[0],pt[1])

输出结果为(104, 39),即缺口位置在验证码图片中的x、y坐标。

  1. 示例1:模拟滑动滑块

为了模拟滑动滑块,我们需要使用模拟鼠标事件的库pyautogui。通过pyautogui定位到滑块的中心位置,然后移动鼠标,最后释放鼠标完成滑动操作。

import pyautogui

#获取滑块中心位置
center_x = 107 + int(gap.shape[1]/2)
center_y = 44 + int(gap.shape[0]/2)

#移动鼠标到滑块中心位置
pyautogui.moveTo(center_x, center_y)

#移动到拼图缺口位置
pyautogui.dragRel(104-center_x, 39-center_y, duration=1)

该程序执行后,会自动模拟人的操作,完成拖动操作。

  1. 示例2:从网络获取验证码
import requests
from io import BytesIO

#获取验证码和缺口图片
url = 'https://www.geetest.com/demo/slide'
response = requests.get(url)
captcha_url = 'https://static.geetest.com/'+response.json()['data']['bg']
gap_url = 'https://static.geetest.com/'+response.json()['data']['fullbg']

captcha = Image.open(BytesIO(requests.get(captcha_url).content))
captcha.save('captcha.jpg')
gap = Image.open(BytesIO(requests.get(gap_url).content))
gap.save('gap.jpg')

该程序会从网络获取验证码和缺口图片,然后使用上述的方法生成滑块验证码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3 使用OpenCV计算滑块拼图验证码缺口位置(场景示例) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • CentOS 6.3安装配置Nginx方法

    下面是CentOS 6.3安装配置Nginx的完整攻略: 1. 安装必要的依赖 在安装Nginx之前,我们需要先安装一些必要的依赖,包括PCRE、zlib和OpenSSL等。可以使用以下命令安装这些依赖: yum install -y gcc gcc-c++ make wget yum install -y pcre pcre-devel zlib zlib…

    人工智能概览 2023年5月25日
    00
  • Java使用OCR技术识别验证码实现自动化登陆方法

    下面我将为您详细讲解“Java使用OCR技术识别验证码实现自动化登陆方法”的完整攻略。 一、什么是OCR技术? OCR(Optical Character Recognition),即光学字符识别,是一种图像识别技术。通过OCR技术,可以将一张含有字符的图片转换成计算机可识别的文本。 二、Java中的OCR技术库 Java中提供的OCR技术库主要是tesse…

    人工智能概览 2023年5月25日
    00
  • Nginx服务器上搭建图片缓存服务的基本配置解析

    以下是“Nginx服务器上搭建图片缓存服务的基本配置解析”的详细攻略。 1. 基本概念解析 Nginx服务器 Nginx是一款高性能的Web服务器,也可作为反向代理服务器、负载均衡服务器以及HTTP缓存服务器等使用。通过配置Nginx服务器,可实现对Web应用程序的代理、负载均衡、缓存加速等功能。 图片缓存服务 图片缓存服务指的是将图片缓存在服务器中,在用户…

    人工智能概览 2023年5月25日
    00
  • Django 开发调试工具 Django-debug-toolbar使用详解

    Django 开发调试工具 Django-debug-toolbar使用详解 在Django开发过程中,我们可能需要使用一些开发调试工具,这些工具可以帮助我们更好的调试和优化我们的应用。现在我们要详细讲解一个非常实用的调试工具,那就是Django-debug-toolbar。 什么是 Django-debug-toolbar? Django-debug-to…

    人工智能概论 2023年5月25日
    00
  • nginx win32 版本静态文件测试 (Windows环境)

    针对题目所提出的问题,“nginx win32 版本静态文件测试 (Windows环境)”的完整攻略,我将从以下几方面介绍: nginx win32版本介绍 nginx win32版本的安装及配置 nginx win32版本静态文件测试的示例说明 1. nginx win32版本介绍 nginx是一款轻量级的Web服务器/反向代理服务器,其优点是占用资源少,…

    人工智能概览 2023年5月25日
    00
  • pycharm debug功能实现跳到循环末尾的方法

    接下来我就详细地讲解一下 PyCharm 中 debug 功能实现跳到循环末尾的方法。 设置断点在 PyCharm 中,我们可以通过单击代码左侧的空白区域,来设置断点。 当程序运行到该处时,代码会停止执行,允许我们使用 debug 功能。 启动 debug 模式我们可以通过单击运行工具栏中的 debug 按钮,或者使用快捷键 Shift + F9 来启动 d…

    人工智能概览 2023年5月25日
    00
  • PyTorch 1.0 正式版已经发布了

    下面是详细的攻略。 PyTorch 1.0 正式版发布攻略 什么是 PyTorch? PyTorch 是一个开源的 Python 机器学习框架,由 Facebook AI Research 开发和维护。它是一个动态计算图框架,提供了一系列易用的工具和接口,以便于研究人员和开发者进行快速的原型设计和部署。 PyTorch 1.0 正式版有哪些新特性? PyTo…

    人工智能概览 2023年5月25日
    00
  • 基于Python实现图片九宫格切图程序

    基于Python实现图片九宫格切图程序攻略 1. 实现思路概述 本程序的基本思路是对一张输入的图片进行九宫格的切割,然后将切割后的小图片保存到本地。 实现的步骤主要包括以下几个方面: 使用 Python 的 Pillow 库对图片进行加载 根据图片的大小计算切图的尺寸 使用 for 循环遍历整张图片,不断地切割小图片,并保存到本地 2. 需要的依赖库 Pil…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部