实战 | 手把手教你用Python+OpenCV实现滑块验证码->自动拖动验证
2023-09-27 14:25:48 时间
导读
本文主要介绍如何使用Python+OpenCV实现滑块验证码->自动拖动验证。
背景介绍
前几天在某网站下载代码时,跳转到滑块验证码界面,需要验证OK后才能下载,貌似这种验证方式现在很流行,所以打算用OpenCV尝试如何让其自动拖动验证。
效果展示
核心步骤是提取滑动块目标位置,如下是效果展示:
OpenCV实现滑块验证码检测定位--自动验证_哔哩哔哩_bilibili-https://www.bilibili.com/video/BV1f44y1b7WK/
目标滑动块定位步骤与演示:
实现步骤:
【1】截取验证图片,颜色通道转换为HSV,取V通道分析
原图:
V通道效果:
B,G,R=cv2.split(img)
hsv_img=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
H,S,V=cv2.split(hsv_img)
ret1, thres= cv2.threshold(V, 200, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('thres', thres)
【2】二值化 + 形态学处理
二值化效果:
开运算+闭运算效果:
k1=np.ones((5,5), np.uint8)
thres = cv2.morphologyEx(thres, cv2.MORPH_OPEN, k1)#闭运算
cv2.imshow('MORPH_OPEN', thres)
k2=np.ones((5,5), np.uint8)
thres = cv2.morphologyEx(thres, cv2.MORPH_CLOSE, k2)#闭运算
cv2.imshow('MORPH_CLOSE', thres)
【3】轮廓提取 + 宽高/面积比筛选
其他图片测试效果(稳定性验证):
自动验证完整步骤
实现步骤:
【1】通过模板匹配定位箭头位置,作为鼠标滑动起点;
【2】定位模板滑动块位置;
【3】控制鼠标拖动,直到与目标滑动块完全重合;
这里提供两种思路:
① 笔者发现这个网站的起始滑动块x位置都是10,那么可以计算目标滑动块与起始滑动块X坐标差值,控制鼠标移动对应的像素量;
② 截取目标滑动块的ROI位置,实时计算ROI被覆盖后剩余像素数量,当剩余像素数量最小时认为被覆盖完全,松开鼠标。
欢迎加入OpenCV与AI深度学习官方微信群一起学习交流:
更多视觉图像处理相关内容,请点击关注:OpenCV与AI深度学习。
相关文章
- Python 异步 redis
- Python+selenium自动化测试环境搭建(详细)
- python基础编程:python如何实现浪漫的烟花秀(附代码)
- python基础——使用模块
- OpenCV读取图片、判断读取是否成功、显示图片的代码(C++代码和Python代码)
- OpenCV-Python中的函数cv.imread()读取到的图像的数据存储结构是怎样的?
- MATLAB、C++、OpenCV、Python、Python-Numpy近似值(取整)求取函数总结【round()、ceil()、floor()、fix()】
- Python调用某函数时如果想跳过某个可选参数怎么办,以OpenCV的函数resize()为例。
- Python+Opencv识别两张相似图片
- Python中flatten用法
- Python语言规范及风格规范
- Python数据处理Tips使用OpenCV预处理图像数据的10种操作
- 使用Python在OpenCV中使用haar Cascade的微笑检测
- Python代码库OpenCV之02Numpy的基础使用(含代码)
- 学习opencv: 获取图像最大连通域 c++和python版
- 使用opencv-python和dlib实现的简单换脸程序
- PIL 和 python-opencv 从内存字节码中读取图片并转为np.array格式
- python 中 ctypes 的使用尝试
- 编写高质量代码 改善Python程序的91个建议 (读后 小记)
- python之pygal:掷一个骰子统计次数并以直方图形式显示
- 混合高斯模型的EM求解(Mixtures of Gaussians)及Python实现源代码
- python postgressql联接失败
- python 3.7.4 安装 opencv(windows7+pycharm),拍照功能
- Python的range函数与for循环语句
- Python使用opencv实现图片定位第三种方式
- opencv python数据增强
- [Python] 列表操作及方法总结