码迷,mamicode.com
首页 > 微信 > 详细

python 打造一个微信跳一跳辅助!(手机本地运行)

时间:2018-05-16 19:43:12      阅读:391      评论:0      收藏:0      [点我收藏+]

标签:odi   高斯   bubuko   SQ   span   长度   起点   其它   lin   

先上成果效果图:

技术分享图片

 

用opencv 做识图识别出棋子的坐标并把它框出来

终点位置的坐标是:

先观察图像发现棋子每跳过后的下一个目标点总是在棋子的上面

这样就可以先获取一个感兴趣的区域,用numpy切出自己感兴趣的区域

然后高斯模糊一下,找寻图像中的轮廓效果特别棒!

 

 

如图:

技术分享图片

然后找出感兴趣的区域也就是中间那一块

技术分享图片

接着寻找终点的位置:

用十字把它标出来:

技术分享图片

 

 接下来框出棋子的位置:

技术分享图片

标出两点的位置:

技术分享图片

然后根据棋子和终点的坐标建立一个三角函数公式

连线两点的位置

技术分享图片

测试压力系数为1.8

然后模拟点击和截屏循环运行就可以了

技术分享图片

更多效果图片:

技术分享图片

跳到正中间!

技术分享图片

各种方块都测试通过

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 

最后上代码:

 1 # -*- coding:utf-8 -*-
 2 import cv2,show
 3 import numpy as np 
 4 import math
 5 import time
 6 import dian
 7 v=0
 8 while v<1:
 9    v=v+1
10    img = cv2.imread(/sdcard/3.png)  
11    #img1 = cv2.imread(‘/sdcard/52.png‘)  
12    img1=img
13    hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
14    lower_blue = np.array([110,50,50])
15    upper_blue = np.array([130,255,255])
16    mask = cv2.inRange(hsv, lower_blue, upper_blue)  
17    ret, binary = cv2.threshold(mask,0,255,cv2.THRESH_BINARY) 
18    contours, hierarchy = cv2.findContours(binary,1,cv2.CHAIN_APPROX_SIMPLE)  
19    cnt=contours[len(contours)-1]
20    a=0
21    dict={}
22    for i in contours:
23        dict[len(i)]=a
24        a=a+1
25    li=np.sort([l for l in dict.keys()],axis=0)[::-1]
26    x, y, w, h = cv2.boundingRect(contours[dict[li[0]]])
27    cv2.rectangle(img1, (x, y), (x+w, y+h), (0,255,0), 5)
28    qi=[x,y,w,h]
29    img2=img1[350:1660]  
30    img2 = cv2.GaussianBlur(img2,(3,3),0)  
31    canny = cv2.Canny(img2, 50, 150)  
32    b=0
33    lk=[]
34    for i in range(canny.shape[0]):
35        x=canny[i]
36        a=0
37        if b==1:
38            break
39        for c in x:
40            a=a+1
41            if c==255:
42                lk.append([i+350,a])
43                b=1
44    cv2.line(img1,(lk[0][1]+20,lk[0][0]),(lk[0][1]-20,lk[0][0]),(255,0,0),5)
45    cv2.line(img1,(lk[0][1],lk[0][0]+20),(lk[0][1],lk[0][0]-20),(255,0,0),5)
46    zhon=[lk[0][1],lk[0][0]]
47    qil=[qi[0]+int(qi[2]/2),qi[1]+qi[3]]
48    print(起点)
49    print(qil)
50    print(终点)
51    print(zhon)
52    cv2.line(img1,(qil[0]+20,qil[1]),(qil[0]-20,qil[1]),(0,0,255),5)
53    cv2.line(img1,(qil[0],qil[1]+20),(qil[0],qil[1]-20),(0,0,255),5)
54    cv2.line(img1,(qil[0],qil[1]),(zhon[0],zhon[1]),(255,0,0),5)
55    yl=qil[1]-zhon[1]
56    xl=qil[0]-zhon[0]
57    #print(xl,yl)
58    lcd=int(yl*yl)+int(xl*xl)
59    cd=int(math.sqrt( lcd ))
60    print(长度按压时间:)
61    an=int(cd*1.18)
62    print(an)
63    dian.dian(str(an))
64    time.sleep(2)
65    show.show(img1)

依赖库

import cv2,show
import numpy as np 
import math
其它为一些辅助,注释掉即可!

python 打造一个微信跳一跳辅助!(手机本地运行)

标签:odi   高斯   bubuko   SQ   span   长度   起点   其它   lin   

原文地址:https://www.cnblogs.com/ksxh/p/9047492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!