C#圖像識(shí)別微信跳一跳機(jī)器人

更新

創(chuàng)新互聯(lián)公司專注于萍鄉(xiāng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供萍鄉(xiāng)營銷型網(wǎng)站建設(shè),萍鄉(xiāng)網(wǎng)站制作、萍鄉(xiāng)網(wǎng)頁設(shè)計(jì)、萍鄉(xiāng)網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造萍鄉(xiāng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供萍鄉(xiāng)網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

GitHub中所有類庫的源碼已經(jīng)轉(zhuǎn)換為C#版本。

準(zhǔn)備

IDE:VisualStudio

Language:C#/VB.NET

GitHub:AutoJump.NET

本文將向你介紹一種通過圖像識(shí)別實(shí)現(xiàn)“跳一跳”機(jī)器人的方法?!?/p>

第一節(jié) 圖像識(shí)別

文中提到的所有方法和步驟只涉及簡單的向量計(jì)算。

需要用到哪些計(jì)算?

比較像素點(diǎn)的顏色

求向量集合的中心

計(jì)算顏色的相似度

一個(gè)RGB顏色可以看作一個(gè)三維向量

比較兩個(gè)顏色的相似度可以計(jì)算它們的歐幾里得距離

也可以直接比較它們的夾角:夾角越小,兩個(gè)顏色越相似,反之亦然

求平面向量集合的中心位置

首先,將集合中所有的向量相加得到向量S

再將向量S除以集合元素的個(gè)數(shù),結(jié)果即為它們的中心

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖1-1 識(shí)別效果預(yù)覽

第二節(jié) 識(shí)別落點(diǎn)

找出盒子落點(diǎn)的前提是發(fā)掘每個(gè)盒子都具有的共同特征。

盒子特征

目標(biāo)落點(diǎn)有兩種類型,菱形或圓形的盒子

只有部分盒子的頂面顏色是大面積的純色

盒子下方的地面背景是純色,但隨著游戲進(jìn)行顏色會(huì)發(fā)生變化

頂點(diǎn)特征

頂點(diǎn)的上側(cè)為背景色

頂點(diǎn)的左側(cè)(可能不適用于圓形)、右側(cè)(可能不適用于圓形)均為背景色

識(shí)別方法

從上向下逐行掃描像素找出盒子的頂點(diǎn)A

繼續(xù)向下找出與A顏色相似的所有像素點(diǎn)集合C

求出C像素集合的中心點(diǎn),即為落點(diǎn)

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖2-1 盒子落點(diǎn)識(shí)別

第三節(jié) 識(shí)別角色

角色的顏色相對(duì)特殊,很容易從游戲圖像中區(qū)分出來。

 人物特征

角色呈國際象棋棋子狀

角色整體顏色較為一致,部分區(qū)域有高光

頂點(diǎn)特征

角色的頂點(diǎn)顏色較深,易于區(qū)分

識(shí)別方法

從上向下逐行掃描像素找出角色的頂點(diǎn)A

繼續(xù)向下找出與A顏色相似的所有像素點(diǎn)集合C

求出C像素集合的中心點(diǎn),并向下偏移固定數(shù)值

中心點(diǎn)偏移后的像素D的位置即為角色的底部

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖3-1 角色底部識(shí)別

第四節(jié) 識(shí)別干擾

通常,簡單的方法只適應(yīng)于絕大部分情況,特定情形時(shí)仍會(huì)出錯(cuò)。

哪些情況會(huì)導(dǎo)致識(shí)別錯(cuò)誤

盒子頂部的顏色不一致時(shí)

角色頂部的位置高于目標(biāo)盒子時(shí)

角色站立的盒子和目標(biāo)盒子的頂部顏色一致時(shí)

其他干擾因素的解決方案

加分提示的動(dòng)畫:延時(shí)解決

擊中中心的動(dòng)畫:延時(shí)解決

音樂盒的樂符動(dòng)畫:不要在音樂盒上停留ヾ(✿゚▽゚)ノ

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖4-1 魔方(正確)

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖4-2 商店(偏離中心)

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖4-3 音樂盒 (偏離中心)

第五節(jié) 實(shí)測數(shù)值

程序的部分參數(shù)需要通過實(shí)際測試得出。

識(shí)別區(qū)域

僅屏幕中間的三分之一區(qū)域需要進(jìn)行圖像識(shí)別

觸壓時(shí)間

觸壓屏幕的毫秒數(shù)正好是角色與落點(diǎn)距離數(shù)值的兩倍

距離為500個(gè)像素點(diǎn),那么就需要持續(xù)按下1000毫秒

該比例適用于1280*720分辨率的設(shè)備,不同設(shè)備可能需要適當(dāng)調(diào)節(jié)

如何計(jì)算其他設(shè)備分辨率的比例

計(jì)算公式:比例=2560/設(shè)備屏幕高度

例如1980*1080分辨率的設(shè)備,比例為2560/1980=1.29

C#圖像識(shí)別 微信跳一跳機(jī)器人

圖5-1 識(shí)別區(qū)域(陰影部分)

附錄

GitHub:AutoJump.NET

參考文章:.NET開發(fā)一個(gè)微信跳一跳輔助程序

參考書籍:《數(shù)學(xué)之美》[美]吳軍 著人民郵電出版社

語言工具: Code Converter(如果你不了解Basic語法,這個(gè)工具將會(huì)非常有用)

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

當(dāng)前名稱:C#圖像識(shí)別微信跳一跳機(jī)器人
網(wǎng)頁路徑:http://bm7419.com/article42/pscpec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管