之前有看到微信小程序《跳一跳》别人用python实现自动运行,后来看到别人用hash码实现《加减大师》的自动答题领取娃娃,最近一直在研究深度学习,为啥不用机器学习实现呢?不就是一个分类问题吗
如何实现自动答题微信小游戏《加减大师》?
**思考:**
- 图像识别吗?
- 如何建立特征工程?
- 选用什么算法?
### 一、图像特征工程
如何获取手机游戏上的图片?
- 使用adb命令截取手机屏幕;
- 在PC端和手机端同时运行APowerMirror软件,将手机投屏到电脑上,然后使用Pillow包中的截图方法截取电脑上对应手机屏幕的
区域。
- 在PC端和手机端同时运行APowerMirror软件,将手机投屏到电脑上,然后使用Python调用windows的原生API截取电脑上对应手机屏幕的区域。
**实验结果:** 三种截屏方式花费的时间差异很大,第一种每次截屏需要0.7s左右,第二种0.3s左右,第三种0.04s左右。
当然选择第3种咯,下载地址[https://www.apowersoft.cn/phone-mirror],一个好的软件是成功的关键(够清晰)。
#### 获取训练样本
相关步骤:
> 1.`util.py`中的`shotByWinAPI`函数:首先利用window自带api获取全屏图片,然后自定义`config.py`的相关参数。
```
# 从PC端截屏时,截取区域左上角相对桌面的x坐标
'projection_x': 32,
# 从PC端截屏时,截取区域左上角相对桌面的y坐标
'projection_y': 278,
# 从PC端截屏时,截取区域的宽度
'projection_width': 482,
# 从PC端截屏时,截取区域的高度
'projection_height': 854,
```
可以用window命令键`PrtScSysRq`(F12的右边),然后复制到画图中(1920x1080)。
![image](https://note.youdao.com/yws/api/personal/file/D5914471B29F477286145D1294E0618E?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
-------------------
用画图的放大镜放大,图中红色框的小方块位置(32x278)`projection_x`即32,`projection_y`即278。
![image](https://note.youdao.com/yws/api/personal/file/91B50A094A2C48AF8F07EFC5271F767D?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
-------------
在画图中计算出截图的宽度和高度,即`projection_width`和`projection_height`(482x854)
![image](https://note.youdao.com/yws/api/personal/file/5FCDF8612E3B40668C6809E247963C60?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
> 2.`img_tool.py`函数介绍:主要是通过`all(img, filename)`函数进行图片分割
```
srcImg = cv2.imread(os.path.join("ScreenShotForTrain", f), 0)
```
上述代码是为了将彩色图片灰度模式加载
![image](https://note.youdao.com/yws/api/personal/file/5A04CACA3D4641BD866AA4B0B5807C1B?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
------------------------------------------
```
def all(img, filename):
"""封装对图片的所有操作"""
img = cropImg(img)
img = binaryImg(img)
img1, img2 = cropAgain(img)
imgs = cutImg(img1, filename + '_1') + cutImg(img2, filename + '_2')
return imgs
def cropImg(img):
"""裁剪原始截图"""
height = img.shape[0]
img2 = img[int(config.config['exp_area_top_rate'] * height):int(config.config['exp_area_bottom_rate'] * height),:]
#print('裁剪完毕')
return img2
```
`cropImg(img)`函数主要是为了裁剪含有数字的区域,通过设置参数
```
#表达式区域的顶部处于整张图片的位置(307/854=0.359)
'exp_area_top_rate': 0.36,
#表达式区域的底部处于整张图片的位置(478/854=0.559)
'exp_area_bottom_rate': 0.56,
```
如果觉得设置比例太麻烦,可以直接写死位置(`img2 = img[int(307):int(478),:]`)。得到如下图:
![image](https://note.youdao.com/yws/api/personal/file/A2D99397EFA24F6DB29271BB224FFD8D?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
----------------
```
def binaryImg(img):
"""二值化图片"""
ret, thresh1 = cv2.threshold(img, config.config['binary_threshold'], 255, cv2.THRESH_BINARY)
# ret, thresh1 = cv2.threshold(img, config.config['binary_threshold'], 255, cv2.THRESH_BINARY_INV)
#print('二值化完毕')
return thresh1
```
`binaryImg(img)`函数主要是为了将图片二值化,可以参考
[Python+OpenCV教程6:阈值分割](https://www.jianshu.com/p/293e04f134c3)。得到的图片如下图:
![image](https://note.youdao.com/yws/api/personal/file/6C103BF6BBCA4926BC80C59D52056F49?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
----------------------------------
```
def cropAgain(img):
"""再次裁剪"""
height = img.shape[0]
img1 = img[0:int(0.5 * height), :]
img2 = img[int(0.5 * height):height, :]
#print('再次裁剪完毕')
return img1, img2
```
`cropAgain(img)`函数主要是为了将图片分成上下两部分
![image](https://note.youdao.com/yws/api/personal/file/50ED0F9D9CFD44DD8B9AC1BB7810128A?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
![image](https://note.youdao.com/yws/api/personal/file/2F36AB9C98B7405496AE4761E4F0235F?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
----------------------------------
```
def cutImg(img, filename):
"""水平分割图片"""
sb = np.array(img)
print(sb.shape)
sum_list = np.array(img).sum(axis=0)
start_index = -1
res = []
names = []
index = 0
for sum in sum_list:
if sum > 255 * 4:
if start_index == -1:
start_index = index
else:
if start_index != -1:
if config.config['type'] == 0:
sigleCharWidth = config.config['abd_single_char_width']
else:
sigleCharWidth = config.config['pc_single_char_width']
#为了防止字符粘连,需要在此处宽度进行判断
if index - start_index > sigleCharWidth * 2:
res.append((start_index,start_index + (index - start_index) // 2))
res.append((start_index + (index - start_index) // 2, index))
else:
res.append((start_index, index))
start_index = -1
index += 1
imgs = []
count = 0
for single_char in res:
start = single_char[0]
end = single_char[1]
sub_img = img[:, start:end]
sub_img = cv2.resize(sub_img, (120, 240), interpolation=cv2.INTER_CUBIC)
#cv2.imwrite('SingleChar/%s_%d.png' % (filename, count), sub_img)
#names.append('%s_%d.png' % (filename, count))
# cv2.imshow(str(count), sub_img)
imgs.append(sub_img)
count += 1
# cv2.waitKey()
#print('分割,重新设置大小 %s 完毕' %filename)
return imgs
```
设置`pc_single_char_width`参数值,得到如下图:
![image](https://note.youdao.com/yws/api/personal/file/A5FD713685C9499DB19E5CE425FAAB37?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda) ![image](https://note.youdao.com/yws/api/personal/file/C895E52552C142B79EE240B0F314E8AB?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda) ![image](https://note.youdao.com/yws/api/personal/file/34C168527BBF4A53BAD37785D6C41AD5?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda) ![image](https://note.youdao.com/yws/api/personal/file/340F8D913EC84CB79976052262C1E1B7?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda) ![image](https://note.youdao.com/yws/api/personal/file/715CE3D3AEF74B2B9764EF8C4B9A184A?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
![image](https://note.youdao.com/yws/api/personal/file/4A5F5F1EDCBF4D77B0CEA9957E7725DF?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
![image](https://note.youdao.com/yws/api/personal/file/07E0A372CAD34418B614CA17E13BEE81?method=download&shareKey=87d4652e9712eea176bb7a67b68c0bda)
![image](https://note.youdao.com/yws/api/personal/file/F01B9F4D00B64BC29D171FF7AFE9008F?method=download&sha
没有合适的资源?快使用搜索试试~ 我知道了~
利用机器学习实现微信-《加减大师》自动答题.zip
共375个文件
png:362个
py:5个
xml:4个
需积分: 5 0 下载量 28 浏览量
2024-05-08
10:08:09
上传
评论
收藏 5.04MB ZIP 举报
温馨提示
利用机器学习实现微信-《加减大师》自动答题.zip
资源推荐
资源详情
资源评论
收起资源包目录
利用机器学习实现微信-《加减大师》自动答题.zip (375个子文件)
WechatGame_jjds.iml 482B
ReadMe.md 14KB
lr.pickle 184KB
29.png 1.57MB
31.png 1.57MB
28.png 1.57MB
30.png 1.57MB
19.png 1.57MB
10.png 1.57MB
9.png 1.57MB
3.png 1.57MB
35.png 1.57MB
12.png 1.57MB
24.png 1.57MB
25.png 1.57MB
15.png 1.57MB
1.png 1.57MB
34.png 1.57MB
23.png 1.57MB
11.png 1.57MB
13.png 1.57MB
6.png 1.57MB
27.png 1.57MB
5.png 1.57MB
4.png 1.57MB
8.png 1.57MB
21.png 1.57MB
17.png 1.57MB
33.png 1.57MB
16.png 1.57MB
32.png 1.57MB
7.png 1.57MB
20.png 1.57MB
18.png 1.57MB
2.png 1.57MB
14.png 1.57MB
26.png 1.57MB
22.png 1.57MB
1532359433.png 39KB
1532359457.png 39KB
1532359424.png 39KB
1532359438.png 39KB
1532359446.png 39KB
1532359464.png 39KB
1532359435.png 38KB
1532359462.png 38KB
1532359463.png 38KB
1532359458.png 38KB
1532359454.png 38KB
1532359439.png 38KB
1532359451.png 38KB
1532359443.png 38KB
1532359455.png 38KB
1532359460.png 37KB
1532359449.png 37KB
1533652353.png 37KB
1532359452.png 37KB
1532359442.png 37KB
1532359448.png 37KB
1532359445.png 37KB
1532359467.png_4.png 915B
1532359435.png_4.png 913B
1532359435.png_4.png 913B
1532359941.png_4.png 912B
1532359433.png_2.png 908B
1532359424.png_0.png 908B
1532359433.png_2.png 908B
1532359424.png_0.png 908B
1532359469.png_2.png 907B
1532359968.png_0.png 907B
1532359457.png_2.png 906B
1532359457.png_2.png 906B
1532359470.png_0.png 906B
1532359454.png_2.png 896B
1532359948.png_2.png 896B
1532359454.png_2.png 896B
1532359936.png_5.png 893B
1532359435.png_0.png 873B
1532359435.png_0.png 873B
1532359446.png_0.png 869B
1532359446.png_0.png 869B
1532359449.png_0.png 838B
1532359449.png_0.png 838B
1532359962.png_0.png 837B
1532359457.png_0.png 836B
1532359457.png_0.png 836B
1532359443.png_4.png 824B
1532359443.png_4.png 824B
1532359463.png_4.png 822B
1532359469.png_4.png 822B
1532359463.png_4.png 822B
1532359475.png_4.png 821B
1532359458.png_4.png 820B
1532359458.png_4.png 820B
1532359946.png_4.png 818B
1532359455.png_2.png 814B
1532359449.png_4.png 814B
1532359462.png_4.png 814B
1532359947.png_4.png 814B
1532359455.png_2.png 814B
共 375 条
- 1
- 2
- 3
- 4
资源评论
生瓜蛋子
- 粉丝: 3823
- 资源: 5216
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功