商城网站 搭建,北京 网站 公司,遵义市城乡建设局安管人员考试网站,荥阳建设网站目录
写在前面#xff1a;
一、关于小猿口算#xff1a;
二、代码逻辑
1.数字识别
2.答题部分
三、代码分享#xff1a;
补充#xff1a;软件包下载
写在前面#xff1a;
最近小猿口算已经被不少大学生攻占#xff0c;小学生直呼有挂。原本是以为大学生都打着本…目录
写在前面
一、关于小猿口算
二、代码逻辑
1.数字识别
2.答题部分
三、代码分享
补充软件包下载
写在前面
最近小猿口算已经被不少大学生攻占小学生直呼有挂。原本是以为大学生都打着本科一年级也是一年级研一也是一年级博一也是一年级的口号凭借自己实力去欺负小学生呢。没曾想竟然是大学生通过脚本刷题。
一个好好的给小学生的口算题已经变成了大学生的计算机大战比谁的脚本刷题速度更快了这里偷偷怀疑一下是不是清华的老师给他的学生们布置了一项作业比谁的脚本刷题刷的快了 小猿口算已经连夜招聘网络安全工程师了 这里也分享一个小编的脚本质量很差甚至还没自己做的快呢不过可以用来自己练手或者自己跑着玩儿也算是顺应时代潮流。
最后欺负小学生这种事情还是不推荐干的。
一、关于小猿口算
主页就长这样也没啥好介绍的今天的主角是“口算PK”里的“20以内的数字比大小”比赛规则啥的大家应该看名称就能才出来。我这里是为了方便运行脚本是在电脑MuMu模拟器上运行的小猿口算 至于比赛过程则是给两个数字可以通过画大于号小于号来进行答题 二、代码逻辑
1.数字识别
数字识别用来一种很笨的方法截图然后通过OpenCv识别。代码的话放在最后一块演示。首选需要把小猿口算和Pycharm同时出现在屏幕上需要打开Mumu模拟器的窗口置顶功能以方便同时能看到Pycharm和小猿口算 然后如下放置 由于这个截图是截取的置顶位置的图片参数什么的还得自己调大家可以查看截取的num.py文件查看自己截图截到了哪个地方自己修改一下mumu模拟器的位置或者代码中截图位置的参数保证能截到一下num.png所示的两个数字信息就好了。
2.答题部分
既然能截取到图片并识别出数字那比较大于小于就So easy了接下来就是画大于号小于号我们直接通过
pyautogui.mouseDown()
pyautogui.move
pyautogui.mouseUp()
来实现按下鼠标鼠标移动画大于号或者小于号松开鼠标的操作。逻辑还是挺简单的。不过这个答题只能保证质量不能保证速度。
三、代码分享
import math
import sys
import timeimport cv2
import keyboard
import pyautogui
import pytesseract
from PIL import ImageGrab# 鼠标移动相对位置分为前后两段用于画大于号或者小于号
# x1大于0画大于小于0画小于
def mouse_move(x1, y1):pyautogui.mouseDown()pyautogui.move(x1, y1, duration0.1)pyautogui.mouseUp()
while True:# 按下空格键终止程序if keyboard.is_pressed(space):print(游戏结束!)sys.exit()ImageGrab.grab(bbox(100, 300, 450, 450)).save(./pngs/num.png)# 改为自己的tesseract.exe路径pytesseract.pytesseract.tesseract_cmd rE:\IDEs\Python\Tesseract-OCR\tesseract.exe# 设置生成的照片的路径img cv2.imread(./pngs/num.png)img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)_, thresh cv2.threshold(img, 150, 100, cv2.THRESH_BINARY)result pytesseract.image_to_string(thresh, config--psm 6).split(?)try:result[0] result[0].strip()result[1] result[1].strip()if result[0] O:result[0] 0if result[1] O:result[1] 0num1 math.floor(float(result[0]))num2 math.floor(float(result[1]))# 设置画大于号小于号的初始位置参数可调pyautogui.moveTo(277, 700, duration0.1)if num1 num2:mouse_move(100,100)print(f{num1} {num2})else:mouse_move (-100,100)print(f{num1} {num2})time.sleep(0.05)except IndexError as e:print(未捕获到内容!)except ValueError as e:print(未捕获到内容!)
补充软件包下载
除了CV2和tesseract之外其他的几个软件包直接鼠标碰到报错提示找不到软件包的地方就会给出解决方法下载软件包。是在不行自己pip install 软件包名也能下载
需要注意的是cv2是opencv里面的一部分因此需要以下指令下载openCV pip install opencv-python OpenCV包还是挺大的推荐使用国内镜像 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 至于tesseract需要手动下载访问如下地址
Tesseract User Manual | tessdoc 滑到最低端选择download 跳转页面后点击这个UB开头的东西 跳转之后找到“set up”程序下载即可 下载安装之后记得把代码里tesseract.exe的路径也跟着修改一下。