Delphi+OpenCV自动识别小红书页面滑块验证之实现原理

直奔主题,小红书滑块验证页面如下:

通过页面分析得到滑块两张图片bg.jpgfg.png

可以看到bg的位置是固定不变的,fg到目标缺口位置Y值也是不变的,但X值是变化的,怎样得到X

首先要识别出缺口的位置,因为我们只识别缺口,不用考虑色彩,所以最先想到的是将彩色图片转为灰度图片,降低识别的复杂度:

这里我们采用了OpenCVcvLoadImageGrayImage.Clone,对图片进行灰度处理。

变灰后排除了色彩干扰,但两个图片的差异还是巨大,为了识别图形轮廓,必须继续将进行图片二值化处理,进一步降低明暗度的干扰。并且由于fg到目标缺口的Y值不变,为了排除相似缺口的干扰,按照fg的图片高度对bg进行了裁剪,裁剪后的bg更清晰了:

这里我们采用cvCanny函数,对图片进行二值化处理。
最后,调用cvMatchTemplate进行图像轮廓对比,并使用cvMinMaxLoc获取匹配度最高的一组坐标值,即可获取到X

有了X值,我们就知道从fg的位置移动多少距离可以到达正确的缺口位置,于是经过多次测试,通过模拟鼠标的点击和拖拽操作,将fg滑块正确地移动到bg对应的缺口中,即可完成滑块的自动拖拽。

总结用到的技术:
1、Delphi调用Chrome内置浏览器,获取图片;
2、Delphi调用OpenCV图像处理和模板匹配,获取X值;
3、Delphi对鼠标光标控制,模拟人工操作

程序全部源码已上传:https://download.csdn.net/download/CashBell/19715727,欢迎交流指导。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岂能平常心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值