QPython 打造一個全自動智能微信跳一跳輔助!(手機本地運行)


先上成果效果圖:

超級瞄准已部署!

精確定位目標中心!

 

用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
其它為一些輔助,注釋掉即可!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM