欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python微信跳一跳系列之棋子定位像素遍歷

 更新時間:2018年02月26日 13:37:57   作者:艾克思工作室  
這篇文章主要為大家詳細介紹了python微信跳一跳系列之棋子定位之像素遍歷,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

在前幾篇博客中,分別就棋子的顏色識別、模板匹配等定位方式進行了介紹和實踐,這一篇博客就來驗證一下github中最熱門的跳一跳外掛中采用的像素遍歷的方法。

方法說明

像素遍歷的實質(zhì)依然是顏色識別。
在github中給出的方法中,采用像素遍歷的方法是:

  • 從高度的1/3處開始至高度的2/3處進行遍歷;
  • 首先間隔50像素進行搜索
  • 當像素的顏色和每一行開始的像素顏色不同時,認為找到了最上面的棋盤位置,則返回上一個間隔處開始遍歷(i-50);
  • 對每一行的像素都進行遍歷,當滿足給定的顏色范圍時,記錄最下面一行的y值,x值的和與個數(shù),平均即可得到中心x值。
  • 所得到的x值和y值即為棋子最底部的中心位置;
  • 按照自己手機的分辨率調(diào)整棋子的高度(減去一個固定值)

上訴方法的代碼如下(可以自行到github下載):

def find_piece_and_board(im):
 #尋找關(guān)鍵坐標
 w, h = im.size

 piece_x_sum = 0
 piece_x_c = 0
 piece_y_max = 0
 board_x = 0
 board_y = 0
 scan_x_border = int(w / 8) # 掃描棋子時的左右邊界
 scan_start_y = 0 # 掃描的起始 y 坐標
 im_pixel = im.load()
 # 以 50px 步長,嘗試探測 scan_start_y
 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 != last_pixel:
  scan_start_y = i - 50
  break
 if scan_start_y:
  break
 print('scan_start_y: {}'.format(scan_start_y))

 # 從 scan_start_y 開始往下掃描,棋子應(yīng)位于屏幕上半部分,這里暫定不超過 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]
  # 根據(jù)棋子的最低行的顏色判斷,找最后一行那些點的平均值,這個顏
  # 色這樣應(yīng)該 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 # 上移棋子底盤高度的一半

遍歷過程動態(tài)演示

這里寫圖片描述

實際運行動畫

以下是實際運行的定位動畫。

這里寫圖片描述

優(yōu)缺點分析

像素遍歷的好處是無需額外的python庫,但其速度顯然明顯低于我在前面用過的其它方法,這不奇怪,外接庫用到的顏色識別方法其實是經(jīng)過優(yōu)化和集成的,像素遍歷是其底層的技術(shù)方案,速度慢理所當然。

改進

其實上述方法還可以進一步優(yōu)化,以大大減小遍歷的面積:

  • 以50像素為間隔從1/3高度開始遍歷;
  • 當首次滿足給定的棋子顏色時,記錄x值的和與個數(shù),平均后得到棋子的x值;
  • 沿x值從上向下對高度進行遍歷,可以得到滿足棋子顏色的最大y值和最小y值;
  • 對y值進行處理,如減去一個固定高度,即可得到棋子的底部中心y值;
  • 對最高點和最低點進行平均,即可得到棋盤的中心y值。

遍歷的過程如下:

這里寫圖片描述

后記

可以看到,優(yōu)化后的遍歷個數(shù)大大減小,速度得到極大提高。

更多內(nèi)容大家可以參考專題《微信跳一跳》進行學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python+Tkinter實現(xiàn)股票K線圖的繪制

    Python+Tkinter實現(xiàn)股票K線圖的繪制

    K線圖又稱蠟燭圖,常用說法是“K線”。K線是以每個分析周期的開盤價、最高價、最低價和收盤價繪制而成。本文將利用Python+Tkinter實現(xiàn)股票K線圖的繪制,需要的可以參考一下
    2022-08-08
  • Python使用Qt5實現(xiàn)水平導(dǎo)航欄的示例代碼

    Python使用Qt5實現(xiàn)水平導(dǎo)航欄的示例代碼

    本文主要介紹了Python使用Qt5實現(xiàn)水平導(dǎo)航欄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解python3中tkinter知識點

    詳解python3中tkinter知識點

    本篇文章給大家分享了關(guān)于python3中tkinter的相關(guān)知識點以及實例代碼,有興趣的朋友參考下。
    2018-06-06
  • Python3字符串的常用操作方法之修改方法與大小寫字母轉(zhuǎn)化

    Python3字符串的常用操作方法之修改方法與大小寫字母轉(zhuǎn)化

    這篇文章主要介紹了Python3字符串的常用操作方法之修改方法與大小寫字母轉(zhuǎn)化,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 解讀Tensorflow2.0訓(xùn)練損失值降低,但測試正確率基本不變的情況

    解讀Tensorflow2.0訓(xùn)練損失值降低,但測試正確率基本不變的情況

    這篇文章主要介紹了Tensorflow2.0訓(xùn)練損失值降低,但測試正確率基本不變的情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Tensorflow中的placeholder和feed_dict的使用

    Tensorflow中的placeholder和feed_dict的使用

    這篇文章主要介紹了Tensorflow中的placeholder和feed_dict的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Pycharm plot獨立窗口顯示的操作

    Pycharm plot獨立窗口顯示的操作

    這篇文章主要介紹了Pycharm plot獨立窗口顯示的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Python面向?qū)ο笾涌?、抽象類與多態(tài)詳解

    Python面向?qū)ο笾涌凇⒊橄箢惻c多態(tài)詳解

    這篇文章主要介紹了Python面向?qū)ο笾涌?、抽象類與多態(tài),結(jié)合實例形式詳細分析了Python面向?qū)ο笾薪涌?、抽象類及多態(tài)的概念、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-08-08
  • Python常用編譯器原理及特點解析

    Python常用編譯器原理及特點解析

    這篇文章主要介紹了Python常用編譯器原理及特點解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python多線程編程(二):啟動線程的兩種方法

    Python多線程編程(二):啟動線程的兩種方法

    這篇文章主要介紹了Python多線程編程(一):啟動線程的兩種方法,本文講解了將函數(shù)傳遞進Thread對象、繼承自threading.Thread類兩種方法,需要的朋友可以參考下
    2015-04-04

最新評論