在网课已经进入千家万户的今天,我们在家上网课已经是一个必不可少的事情了,但是有时侯因为一些事情,无法准时上课,然后就被老师扣了成绩,正好我们老师使用的是腾讯会议(其他软件也一样),所以就想打算写一个能够定时自动登入会议的自动化脚本,于是就有了如下的挖坑之旅:
import os import pandas as pd import pyautogui import time from datetime import datetime import cv2 def imgAutoCick(tempFile, whatDo, debug=False): ''' temFile :需要匹配的小图 whatDo :需要的操作 pyautogui.moveTo(w/2, h/2)# 基本移动 pyautogui.click() # 左键单击 pyautogui.doubleClick() # 左键双击 pyautogui.rightClick() # 右键单击 pyautogui.middleClick() # 中键单击 pyautogui.tripleClick() # 鼠标当前位置3击 pyautogui.scroll(10) # 滚轮往上滚10, 注意方向, 负值往下滑 更多详情:https://blog.csdn.net/weixin_43430036/article/details/84650938 debug :是否开启显示调试窗口 ''' pyautogui.screenshot('big.png') gray = cv2.imread("big.png",0) img_template = cv2.imread(tempFile,0) w, h = img_template.shape[::-1] res = cv2.matchTemplate(gray,img_template,cv2.TM_SQDIFF) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) top = min_loc[0] left = min_loc[1] x = [top, left, w, h] top_left = min_loc bottom_right = (top_left[0] + w, top_left[1] + h) pyautogui.moveTo(top+h/2, left+w/2) whatDo(x) if debug: img = cv2.imread("big.png",1) cv2.rectangle(img,top_left, bottom_right, (0,0,255), 2) img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_NEAREST) cv2.imshow("processed",img) cv2.waitKey(0) cv2.destroyAllWindows() os.remove("big.png") def signIn(meeting_id): ''' 本模块主要引入腾讯会议号,进入会议之中; ''' # 这一步是使用腾讯会议的绝对路径调用并启动腾讯会议 os.startfile("C:\Program Files (x86)\Tencent\WeMeet\wemeetapp.exe") time.sleep(7)# 等待启动 imgAutoCick("joinbtn.png", pyautogui.click, False) time.sleep(1)# 截取需要点击的地方的小 imgAutoCick("meeting_id.png", pyautogui.click, False) pyautogui.write(meeting_id) time.sleep(2) imgAutoCick("final.png", pyautogui.click, False) time.sleep(1) while True: now = datetime.now().strftime("%m-%d-%H:%M") if now=="09-12-02:21": meeting_id = '522 612 768' time.sleep(5) signIn(meeting_id) time.sleep(2) print('signed in') break
在一开始我使用的是 pyautogui
的图像识别并且区点击的算法区识别图像做匹配的,但是这种算法,我没有实验成功过,一次都没有就有点尴尬。我真的有点怀疑这个算法能不能用(bushi)后来考虑到用模板匹配的话,open-cv
是比较适合的,而且我上学期也用过一段时间的opencv,就在度娘上找了一下,发现果然有这套模板匹配的函数,在用了这个算法之后整个脚本的成功率直线上升。果然opencv
碉堡了!!
其实这个脚本还是一个比较原始的状态在时间的设置和会议号的传递上还存在比较大的改进的空间,但是基本的核心模块已经实现了就先这样吧,等有空再去修修补补。
主要参考文章有:opencv算法, Automating_Zoom