基于python的安卓外掛

1.前言

初學python鉴象,看到微信跳一跳外掛覺得挺有意思抑胎,想做個比這個稍簡單的來學習一下相關(guān)語法與模塊

(此外掛只用于學習梨撞!并沒有過多關(guān)于外掛的知識1⑾础)所做的游戲就是這個!開心斗游戲中的消磚塊小游戲

通過點擊屏幕來使該位置增加方塊卧波,從而達到消掉一層四個磚塊时肿,是一個簡單的休閑小游戲。

2.所用工具/前期準備

(1).python3.X

          請讀者自行配置環(huán)境港粱,推薦用conda:
          # 添加國內(nèi)源螃成,下載穩(wěn)定點
          conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
          # 其他參數(shù)            
          conda config --set show_channel_urls yes
          # 創(chuàng)建一個虛擬環(huán)境,推薦用 tensorflow 的
          conda create -n tensorflow python=3.6.4
          # 開啟剛才新建的虛擬環(huán)境
          conda activate tensorflow

(2).adb  

           本攻略只適合安卓手機查坪,請先下載adb驅(qū)動

          下載地址:http://adbshell.com/downloads

(3).python中的openCV模塊進行簡單的圖像識別

           下載方法:命令行中輸入pip install opencv-python進行下載

 (4).python中的numpy,PIL和pylab模塊進行簡單運算和圖像處理
           pip install matplotlib
           pip install numpy
           pip install pillow

3.adb安裝注意事項
1.在cmd中輸入adb寸宏,顯示如下字樣證明安裝成功。

...
environment variables:
 $ADB_TRACE
     comma-separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
 $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
 $ANDROID_SERIAL          serial number to connect to (see -s)
 $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)

2.將手機調(diào)整到開發(fā)者模式(百度各種型號的打開方法)偿曙,并開啟USB調(diào)試功能
3.將手機與PC連接氮凝,手機中詢問是否調(diào)試,一直點同意望忆。PC中打開cmd 輸入
adb devices
若看到如下顯示罩阵,則證明已經(jīng)連接上了!可以開啟我們的編程之旅了启摄!

List of devices attached
FYIYHH7JKGLGJKK(這個是一串id)    device

4.adb的簡易操作
//在屏幕上做劃屏操作稿壁,前四個數(shù)為坐標點,后面是滑動的時間(單位毫秒)歉备。把原來滑動就可以移動視圖的應(yīng)用打開驗證
adb shell input swipe 250 250 450 450 200
[觸摸] adb swipe x1 y1 x2 y2 duration(ms)
-[注] adb好像沒有觸摸 不過有滑動 ,所以把 x1 y1 x2 y2 變成一個像素點,加上時間即可變成長按
//在屏幕上點擊坐標點x=50 y=250的位置傅是。
adb shell input tap 50 250
//截圖
adb shell /system/bin/screencap -p /sdcard/screenshot.png
//將截好的圖保存到電腦之中
adb pull /sdcard/screenshot.png /Users/xxx/Downloads
以上就是我們可能會用到的基本指令了,想了解更多的adb指令的話威创,參考這篇文章:https://blog.csdn.net/jlminghui/article/details/39268419

5.圖像處理

(1).我們先要抓取屏幕并傳輸?shù)诫娔X中落午,上面已經(jīng)提過了谎懦,所以直接上函數(shù)

def screenshot():

os.system("adb shell screencap -p /sdcard/game.png")#cmd運行
os.system("adb pull /sdcard/game.png D:/PYthon/first_j/game.png")#存入電腦里面
    截圖后肚豺,我們得到如下圖像
image

(2).我們發(fā)現(xiàn)上方的信息和下方的一些按鍵并不是我們想要的,我們可以輕松的把它們裁剪掉

crop_img = img[280:1780, 20:1080] # X=1060,Y=1500
效果圖:


image

(3).當我們拿到這一張彩色的圖片的時候界拦,我們自然的知道應(yīng)該向哪里發(fā)射方塊吸申,可是怎么才能讓機器知道呢?這里我們應(yīng)該把圖像轉(zhuǎn)化為灰度或二值圖像,進行一系列的去噪等操作截碴,使得計算機可以認出我們的圖像并做判斷

Q:什么是灰度圖像梳侨?什么是二值圖像?

    http://www.jb51.net/article/78762.htm

    這篇文章講解的非常清晰日丹,讀者可以仔細閱讀走哺,了解一下數(shù)字圖像的構(gòu)成和灰度圖像的原理

    我們這里講圖片轉(zhuǎn)化為二值圖像,效果圖如下
GrayImage = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY_INV)
image
        在上圖中哲虾,我們看到方塊有些不整齊丙躏,有一部分白色,我們要把這些白色填充掉束凑,使得后面的程序更容易識別方塊晒旅,此時需要一些形態(tài)學方面的操作。

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25))
closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)

上一下效果圖


image
    PS:左上角的東西我們無需擔心~它只是在個別的時候會蹦出來汪诉,告訴我們我們的磚塊行數(shù)+2了废恋,然后會馬上消失~并不 影響我們的識別~


到這里,我們對圖像的處理已經(jīng)很完善了扒寄。機器已經(jīng)能很輕松的識別哪里是磚塊(黑色——值為0)鱼鼓,哪里是空白(白色——值為255),如果小伙伴們有時候處理一些復雜的圖像旗们,可以再用一下腐蝕與膨脹算法蚓哩,效果也是非常好的。貼一下代碼

# 分別執(zhí)行4次形態(tài)學腐蝕與膨脹算法上渴。
closed = cv2.erode(closed, None, iterations=4)
closed = cv2.dilate(closed, None, iterations=4)

6.模擬操作

    相信大家的想法和我最初的想法非常像岸梨,這個是不是已經(jīng)接近尾聲了,我只需要檢測   X= [100,375,650,925]

這四個點哪里是白色就模擬按鍵就好了稠氮?我就是用了這個簡單的算法曹阔,發(fā)現(xiàn)模擬的結(jié)果非常不理想:(劃重點)因為adb模擬按鍵和截圖的速度并不快,所以會導致沒有人的操作快隔披!

那怎么辦赃份?只能優(yōu)化算法咯

我們先檢測哪里有方塊,什么時候出方塊奢米,并把他的位置存到數(shù)組中

#先檢測什么時候有塊
for count in np.arange(1450,0,-50):
        if int(closed[count,100])+int(closed[count,375])+int(closed[count,650])+int(closed[count,925])!=255*4:
            break
    for i in np.arange(count,0,-160):
        Y.append(i)

記錄后抓韩,一次性進行多次按鍵操作,實現(xiàn)一張圖模擬多個按鍵鬓长,這樣效率就高多啦

for i in Y:
                if closed[i,100]!=0:
                    val.append(120)
                elif closed[i,375]!=0:
                    val.append(395)
                elif closed[i,650]!=0:
                    val.append(670)
                elif closed[i,925]!=0:
                    val.append(945)
    return val

原文:https://blog.csdn.net/qq_35624030/article/details/79618988

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谒拴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涉波,更是在濱河造成了極大的恐慌英上,老刑警劉巖炭序,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苍日,居然都是意外死亡惭聂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門相恃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辜纲,“玉大人,你說我怎么就攤上這事拦耐∏惹福” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵揩魂,是天一觀的道長幽邓。 經(jīng)常有香客問我,道長火脉,這世上最難降的妖魔是什么牵舵? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮倦挂,結(jié)果婚禮上畸颅,老公的妹妹穿的比我還像新娘。我一直安慰自己方援,他們只是感情好没炒,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著犯戏,像睡著了一般送火。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上先匪,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天种吸,我揣著相機與錄音,去河邊找鬼呀非。 笑死坚俗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的岸裙。 我是一名探鬼主播猖败,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼降允!你這毒婦竟也來了恩闻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拟糕,失蹤者是張志新(化名)和其女友劉穎判呕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體送滞,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡侠草,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了犁嗅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边涕。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褂微,靈堂內(nèi)的尸體忽然破棺而出功蜓,到底是詐尸還是另有隱情,我是刑警寧澤宠蚂,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布式撼,位于F島的核電站,受9級特大地震影響求厕,放射性物質(zhì)發(fā)生泄漏著隆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一呀癣、第九天 我趴在偏房一處隱蔽的房頂上張望美浦。 院中可真熱鬧,春花似錦项栏、人聲如沸浦辨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽流酬。三九已至,卻和暖如春列另,著一層夾襖步出監(jiān)牢的瞬間康吵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工访递, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晦嵌,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓拷姿,卻偏偏與公主長得像惭载,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子响巢,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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