微信跳一跳python自動程式碼解讀1.0
阿新 • • 發佈:2019-01-06
微信跳一跳
那個跳一跳python“外掛”,有幾個python檔案,其中有一個是得到截圖,然後滑鼠在圖片上點選兩次,python視窗上會列印兩次滑鼠的位置,並且會跟上一行這兩個點之間的距離。
這個功能我先給除去獲取截圖,就說怎麼在某張圖片上算出兩次點選的距離。
首先,需要用到圖形模組,PIL:
from PIL import Image
img = Image.open('0.jpg')
然後用圖形繪製模組matplotlib來給出一個plot物件:
import matplotlib.pyplot as plt
fig = plt.figure()
給這個物件加上剛剛開啟圖片的標籤:
plt.imshow(img, animated = True)
然後用matplotlib的canvas.mpl_connect函式,將我們點選的動作和圖片連線起來,這個函式的第二個引數要我們自己的寫。
fig.canvas.mpl_connect('button_press_event', on_press)
在這個自定義的on_press函式,我們要實現得到兩個點以後再算出距離。
那麼我們就要有變數來儲存兩個點,臨時儲存點,來計算點選了多少次,橫縱座標
分別用全域性變數cor=[0,0],coords=[], click_count=0,ix,iy
global ix,iy
global click_count
global cor
ix,iy = event.xdata, event.ydata
coords = []
coords.append((ix,iy))
print("now = ", coords)
cor.append(coords)
click_count += 1
先把點儲存在臨時的coords裡面,打印出當前位置,然後將臨時的放入全域性變數cor裡面, 並且點選次數+1.
if click_count > 1:
click_count = 0
cor1 = cor.pop()
cor2 = cor.pop()
distance = (cor1[0][0] - cor2[0][0]) **2 + (cor1[0][1] - cor2[0][1]) **2
distance = distance ** 0.5
print("distance = ", distance)
當點選次數大於1的時候,就說明已經儲存了兩個點了。
這裡用的棧pop()方法得到兩個點,分別放入cor1 和 cor2, 那麼cor1 和 cor2 就是兩個點了。
接著計算出距離distance就行了。
完整程式碼:
import numpy as np
from matplotlib.animation import FuncAnimation
import matplotlib.pyplot as plt
from PIL import Image
def on_press(event):
global ix,iy
global click_count
global cor
ix,iy = event.xdata, event.ydata
coords = []
coords.append((ix,iy))
print("now = ", coords)
cor.append(coords)
click_count += 1
if click_count > 1:
click_count = 0
cor1 = cor.pop()
cor2 = cor.pop()
distance = (cor1[0][0] - cor2[0][0]) **2 + (cor1[0][1] - cor2[0][1]) **2
distance = distance ** 0.5
print("distance = ", distance)
cor = [0,0]
click_count = 0
fig = plt.figure()
img = Image.open('0.jpg')
#updata = True
plt.imshow(img, animated= True)
fig.canvas.mpl_connect('button_press_event', on_press)
plt.show()
最終效果: