先上代码
import ddddocr
import cv2
# ↓这行代码是本地库,可以不写,但需要引入其他库
from lib.init import *
# 去掉上面的代码,改成引入os,time,pyautogui
# 然后修改下面的代码
# 尝试通过不停的试验试出来
# pyautogui检测识图,不通过重新反复识别
# 然后继续识图,直到通过为止,再进行下一步
w(5)
# 等待5秒
def yz():
screenshot('test.jpg',region=(721, 358, 460, 459))
# 在屏幕的721,358(左上)截图,长宽为460,459(到右下)
# 截图的范围在721,358到1181,817
det = ddddocr.DdddOcr(det=True)
with open("test.jpg", 'rb') as f:
image = f.read()
# 把截图的图片识别
poses = det.detection(image)
print(poses)
# 打印识别出来的位置
im = cv2.imread("test.jpg")
for box in poses:
x1, y1, x2, y2 = box
im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
click(x1+721+20, y1+358+20)
# 读取test.jpg,然后框选出汉字部分,然后挨个点击
click(locateOnScreen(r'.\img\g.png',grayscale=True))
cv2.imwrite("result.jpg", im)
remove('test.jpg')
remove('result.jpg')
# 如果不需要保留图片,可以删除
yz()
# 执行上面的函数
w(0.3)
# 这个作用就是按顺序点击的方法
# sb.png就是验证码点击失败后的图片
# 如果检测到验证码点击失败了,则重新执行
# 直到通过为止
for x in range(10):
if locateOnScreen(r'.\img\sb.png',grayscale=True):
w(2)
yz()
else:
print("完成")
# 此验证码在mcbbs.net试过,可以使用
# 基本重复2-4遍就过了
# 屏幕1080p,浏览器缩放级别为150%
# 建议自行改一下代码
这里w(5)等于time.sleep(5),给简写了