2018-01-02 微信跳一跳自動化測試

一语淘、小程序:跳一跳
本質(zhì)上是棋子坐標到新物件中心的距離ds與屏幕長按時間dt的比例關系

二、使用到的工具和用法
1际歼、adb工具包
adb全名Andorid Debug Bridge. 顧名思義, 這是一個Debug工具惶翻。
用途:
(1)、截屏(保存為screenshot.png)
adb shell /system/bin/screencap -p /sdcard/screenshot.png
(2)鹅心、將截屏圖片推送到電腦(temp.png)
adb pull /sdcard/screenshot.png E:\\testproject\\temp.png
(3)吕粗、模擬屏幕長按
adb shell input swipe x1 y1 x2 y2 dt
swipe模擬的是屏幕的滑動,x1,y1到x2,y2的滑動旭愧,延遲dt秒
2颅筋、python庫
(1)子進程庫subprocess
用途:執(zhí)行上述adb命令
基本使用1:subprocess.Popen(args),其中args為命令行输枯,這個是最基本的使用议泵,還有很多參數(shù),不細說了桃熄。注意如果其他參數(shù)都默認先口,該子線程將獨立運行,即子線程間不等待瞳收。
基本使用2:subprocess.call(args)碉京,是上面的封裝,多個子線程會按照順序依次執(zhí)行螟深。
(2)圖像處理庫opencv
用途:從截圖上識別棋子的坐標和新物件的中心坐標
步驟:
1谐宙、讀取截屏圖片,并做切割血崭,主要是去除圖片上下其他內(nèi)容的影像

    image_name = 'temp.png'
    # 圖片讀取
    img = cv2.imread(image_name)
    # 圖片切割
    roi = img[400:1000, 80:680]    
roi圖

2卧惜、灰度處理和邊緣檢測厘灼,獲取輪廓圖

# 灰度處理
    gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    # canny邊緣檢測,用于識別落點
    edges = cv2.Canny(roi, 50, 100)

edges圖

3咽瓷、識別棋子:通過識別棋子頂部的圓實現(xiàn)
使用到opencv庫中的霍夫圓變換
cv2.HoughCircles(image, method, dp, minDist, circles, param1, param2, minRadius, maxRadius)

主要參數(shù):
image
輸入 8-比特设凹、單通道灰度圖像.
method
Hough 變換方式
dp
累加器圖像的分辨率,dp的值不能比1小茅姜。
min_dist
該參數(shù)是讓算法能明顯區(qū)分的兩個不同圓之間的最小距離闪朱。
param1
用于Canny的邊緣閥值上限,下限被置為上限的一半钻洒。
param2
累加器的閥值奋姿。
min_radius
最小圓半徑。
max_radius
最大圓半徑素标。

返回值為檢測到圓的序列称诗,包括圓心坐標和半徑
這里的參數(shù),只要半徑是19-21左右头遭,其他需要多次嘗試后寓免,取合適的值

# 檢測圓心和半徑
def findring(gray):
    circles1 = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 2,
                                400, param1=100, param2=50, minRadius=19, maxRadius=21)
    # print(circles1)
    circles = circles1[0, :, :]
    circles = np.uint16(np.around(circles))
    ring = circles[0]
    return ring

4、識別新物件的中心
這個是通過新物件最高點(x最屑莆)和最右端(y最大)來確定的
分三步:
(1)確定棋子位置后袜香,消除棋子的輪廓。因為有的是有新物件靠的比較近或者新物件比較小鲫惶。棋子高度影響對新物件坐標的識別蜈首。
(2)確定這個edges的最高點,找到x最小的點欠母,一般就是新物件的最高點欢策,這時的y坐標為中心點的y坐標
(3)從新物件最高點向右迭代,找到y(tǒng)最大值的點艺蝴,即最右端猬腰。這時的x坐標為中心的x坐標

def findtop(edges):
    x,y = np.where(edges==255)
    # 獲得x最小時的索引,并獲得對應的y坐標
    index = np.argmin(x)
    ymin = y[index]
    # 從該位置向右400個像素猜敢,查找y最大值,獲得對應的x坐標
    xmax = x[np.argmax(y[index:index+400])]
    return ymin,xmax
這里返回值中盒延,xy坐標相反是為了視圖顯示的方便缩擂,因為cv2畫圖時候的x,y分別表示對應左邊界和上邊界的距離添寺,和numpy讀取圖片像素矩陣的索引x胯盯,y(行和列)正好相反。
識別結(jié)果圖

三计露、其他注意點:
1博脑、獲得棋子上端圓心坐標后憎乙,做修正獲得棋子落點坐標
2、新物件中心坐標獲得后叉趣,稍微向上做修正泞边,因為隨著游戲后期新物件變小,中心坐標要做稍微上移疗杉,增加容錯率阵谚。游戲初期新物件比較大,問題不大烟具。
3梢什、計算ds,增加系數(shù)(約2.1)計算dt朝聋。系數(shù)根據(jù)屏幕大小有區(qū)別嗡午,多嘗試幾次做相應調(diào)整。

ds = math.sqrt((e_pos[0] - b_pos[0]) ** 2 + (e_pos[1] - b_pos[1]) ** 2)
a = 2.1
dt = int(a*ds)
jump(dt)
time.sleep(1.5)

4冀痕、每次jump后翼馆,要等待1.5秒左右,一方面是為了某些額外加分金度。另一反面有時超越好友會有動畫效果应媚,會影響新物件坐標的識別。

四猜极、寫在最后的最后
分數(shù)不要刷太高中姜,有時候排行榜不會顯示的。跟伏。丢胚。


image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市受扳,隨后出現(xiàn)的幾起案子携龟,更是在濱河造成了極大的恐慌,老刑警劉巖勘高,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峡蟋,死亡現(xiàn)場離奇詭異,居然都是意外死亡华望,警方通過查閱死者的電腦和手機竣况,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門下隧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署隘,“玉大人喉脖,你說我怎么就攤上這事”鲎ィ” “怎么了子漩?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵豫喧,是天一觀的道長。 經(jīng)常有香客問我幢泼,道長紧显,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任旭绒,我火速辦了婚禮鸟妙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挥吵。我一直安慰自己重父,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布忽匈。 她就那樣靜靜地躺著房午,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丹允。 梳的紋絲不亂的頭發(fā)上郭厌,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音雕蔽,去河邊找鬼折柠。 笑死,一個胖子當著我的面吹牛批狐,可吹牛的內(nèi)容都是我干的扇售。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚣艇,長吁一口氣:“原來是場噩夢啊……” “哼承冰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起食零,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤困乒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贰谣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娜搂,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年冈爹,在試婚紗的時候發(fā)現(xiàn)自己被綠了涌攻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡频伤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芝此,到底是詐尸還是另有隱情憋肖,我是刑警寧澤因痛,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站岸更,受9級特大地震影響鸵膏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怎炊,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一谭企、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧评肆,春花似錦债查、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至久橙,卻和暖如春俄占,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淆衷。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工缸榄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祝拯。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓甚带,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹿驼。 傳聞我的和親對象是個殘疾皇子欲低,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容