国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

微信跳一跳python輔助軟件思路及圖像識別源碼解析

2020-02-16 11:27:32
字體:
來源:轉載
供稿:網友

本文將梳理github上最火的wechat_jump_game的實現思路,并解析其圖像處理部分源碼

首先廢話少說先看效果

核心思想

獲取棋子到下一個方塊的中心點的距離
計算觸摸屏幕的時間
點擊屏幕

重要方法

計算棋子到下一個方塊中心點的距離

使用 adb shell screencap -p 命令獲取手機當前屏幕畫面 再通過圖像上的信息找出棋子的坐標和下一個方塊中心點的坐標 然后通過兩點間距離公式計算出距離

計算觸摸屏幕的時間

T=A * S

其中S為上步算出的像素距離,T為按壓時間(ms),A為一個系數這個系數會隨著屏幕分辨率的變化而變化,在1920*1080的屏幕下這個系數為1.35,在2560*1440的屏幕下這個系數為1.475

點擊屏幕

adb shell input swipe x y x y time(ms)

這條命令能夠點擊手機屏幕x,y位置time(ms)

圖像處理部分源碼解析

圖像處理部分代碼都在 find_piece_and_board(im) 方法中

通過輸入的圖像im計算出棋子的坐標點以及下一個方塊中心的坐標點

在find_piece_and_board的方法中一進來就是下面的兩個嵌套在一起的for循環(huán):

 for i in range(int(h / 3), int(h * 2 / 3), 50):    last_pixel = im_pixel[0, i]    for j in range(1, w):      pixel = im_pixel[j, i]      # 不是純色的線,則記錄 scan_start_y 的值,準備跳出循環(huán)      if pixel[0] != last_pixel[0] or pixel[1] != last_pixel[1] or pixel[2] != last_pixel[2]:        scan_start_y = i - 50        break    if scan_start_y:      break

這段代碼的作用就是從屏幕2/3的位置向下尋找不是純色的線。并將找到位置的縱坐標-50作為,尋找棋子和方塊的起始坐標。這樣可以簡化以后搜索的工作量,因為在這個橫坐標以上是沒有東西的。

接下來是查找棋子坐標的代碼

# 查找棋子坐標  # piece_x_sum 橫坐標總量 piece_x_c 點的個數 piece_y_max 縱坐標最大值  # 從 scan_start_y 開始往下掃描,棋子應位于屏幕上半部分,這里暫定不超過 2/3  for i in range(scan_start_y, int(h * 2 / 3)):    for j in range(scan_x_border, w - scan_x_border): # 橫坐標方面也減少了一部分掃描開銷      pixel = im_pixel[j, i]      # 根據棋子的最低行的顏色判斷,找最后一行那些點的平均值,這個顏色這樣應該 OK,暫時不提出來      if (50 < pixel[0] < 60) and (53 < pixel[1] < 63) and (95 < pixel[2] < 110):        piece_x_sum += j        piece_x_c += 1        piece_y_max = max(i, piece_y_max)  if not all((piece_x_sum, piece_x_c)):    return 0, 0, 0, 0  # 平均橫坐標  piece_x = int(piece_x_sum / piece_x_c)  # 縱坐標最大值-底座一半的高度  piece_y = piece_y_max - piece_base_height_1_2 # 上移棋子底盤高度的一半            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东丰县| 石楼县| 斗六市| 搜索| 常德市| 平利县| 墨竹工卡县| 石门县| 宁津县| 禄劝| 精河县| 淮南市| 元江| 乐昌市| 田东县| 米易县| 太和县| 东丽区| 桃江县| 迁西县| 平顶山市| 长春市| 甘谷县| 东至县| 揭东县| 瓮安县| 陆河县| 崇左市| 苍溪县| 灵山县| 舞钢市| 柘城县| 泸定县| 武夷山市| 东平县| 新民市| 当雄县| 金湖县| 淳化县| 临澧县| 哈巴河县|