微信自动抢红包教程有很多,有通过分析安卓组件写的,由于对java不熟悉,就想通过监视电脑屏幕的方法做,也就是OpenCV,或者卷积神经网络,刚好以前项目做到过。在查询资料的过程中有发现一个神奇的库——pyautogui。这个库可以很方便的控制鼠标和键盘。也可以识别屏幕元素,做模板匹配,翻看它的源码发现了cv2这个函数,仔细一看,也是用的OpenCV这个库。
ps:电脑用的是模拟器。
好的,废话不多说,上干货。
import pyautogui
import time
import random
# pyautogui.PAUSE = 1
print("请输入's'开始")
a = input()
flag_A = 0
# 1065,37
region = (0, 0, 1920, 1080)
while a == 's':
while 1:
start_time = time.time()
A = pyautogui.locateCenterOnScreen("IMAGES/0.png", confidence=0.7)
rad_num = random.randint(-20, 20)
if A:
print('A')
if flag_A == 0:
pyautogui.click(A[0] + rad_num, A[1] + rad_num)
flag_A = 1
B = pyautogui.locateCenterOnScreen("IMAGES/3.png", confidence=0.7)
if B:
flag_A = 0
print('B')
pyautogui.click(B[0] + rad_num, B[1] + rad_num)
time.sleep(3)
pyautogui.press('esc')
end_time = time.time()
print(f"the running time is: {end_time - start_time} s")
time.sleep(2)
C = pyautogui.locateCenterOnScreen("IMAGES/man.png", confidence=0.7)
if C:
flag_A = 0
pyautogui.press('esc')
print(flag_A)
大体原理就是看到没领的红包鼠标点过去点开然后退出。遇到抢完的红包直接退出。
里面三个图片对于是这样的,下载到不同的电脑上需要自己截图保存在IMAGES这个文件夹内。
关于pyautogui库的使用网上有很多,这里给出一些常用的用法。文章来源:https://www.toymoban.com/news/detail-721109.html
#读取图片,图片名不能用中文:笑死、、、、、(opencv?)
#常用函数:
# 移动鼠标
pyautogui.moveTo(200,400,duration=2)
pyautogui.moveRel(200,500,duration=2)
第一行是将鼠标移动到指定的像素(200,400)位置,第二行代码是将鼠标按照当前点向右移动200px,向下移动400px这个方向移动。正表示右下负表示左上
print(pyautogui.position()) # 得到当前鼠标位置;输出:Point(x=200, y=800)
# 点击鼠标
pyautogui.click(10,10) # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left') # 单击左键
pyautogui.click(1000,300,button='right') # 单击右键
pyautogui.click(1000,300,button='middle') # 单击中间
pyautogui.doubleClick(10,10) # 指定位置,双击左键
pyautogui.rightClick(10,10) # 指定位置,双击右键
pyautogui.middleClick(10,10) # 指定位置,双击中键
#拖动到指定位置
pyautogui.dragTo(100,300,duration=1)
#将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数;
#按方向拖动
pyautogui.dragRel(100,500,duration=4) # 第一个参数是左右移动像素值,第二个是上下,
#向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟;
pyautogui.scroll(300) # 向上滚动300个单位;
#屏幕截图
im = pyautogui.screenshot()
im.save('Screenshots/屏幕截图.png')
#屏幕识别
import pyautogui
pyautogui.PAUSE = 1
# 图像识别(一个)
btm = pyautogui.locateOnScreen('zan.png')
print(btm) # Box(left=1280, top=344, width=22, height=22)
# 图像识别(多个)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm)) # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]
#直接获得中心坐标
x, y = pyautogui.locateCenterOnScreen('IMAGES/已领取.png')
pyautogui.click(x, y)
#键盘输出
keyDown():模拟按键按下
keyUP():模拟按键松开
press():模拟一次按键过程,即 keyDown 和 keyUP 的组合
typewrite():模拟键盘输出内容
#eg:
pyautogui.keyDown('shift')
pyautogui.press('1')
pyautogui.keyUp('shift')
#运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号
pyautogui.typewrite('python', 1)
#第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。
#运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。
pyautogui.typewrite(['p','y','t','h','o','n','enter'])
运行上面代码,编辑器里面就会输出 python 之后换行。
pyautogui.hotkey('ctrl','c')
#和
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
# 相同
#屏幕截图
img = pyautogui.screenshot()
region = (300,400,606,500)
img = pyautogui.screenshot(region=region)
#这可以指定区域
文章来源地址https://www.toymoban.com/news/detail-721109.html
到了这里,关于Python微信自动抢红包程序(OpenCV,pyautogui)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!