Ai實現FPS遊戲自動瞄準 yolov5fps自瞄
# 這裡是匯入依賴,需要這些庫
import math
import sys
import time
import torch
import win32api
import win32con
import win32gui
from PyQt5.QtWidgets import QApplication
from pynput.mouse import Controller
import mouse
# 這裡這倆 class 就是文章上面說的那個傳入兩個座標點,計算直線距離的
class Point():
def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
class Line(Point):
def __init__(self, x1, y1, x2, y2):
super().__init__(x1, y1, x2, y2)
def getlen(self):
changdu = math.sqrt(math.pow((self.x1 - self.x2), 2) + math.pow((self.y1 - self.y2), 2))
return changdu
# 第一步:我們獲取到某 FPS 遊戲的視窗控制程式碼
hwnd = win32gui.FindWindow(None, " 穿越火線 ")
# 這個方法是獲取上面控制程式碼視窗的視窗截圖,用的是 PyQt 截圖,有速度更快更好的方式的話可以換上
# 截圖完畢後儲存在根目錄的 cfbg.bmp 檔案
def screen_record():
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("cfbg.bmp")
# 這裡就是呼叫我們那 yolo 模型來進行推理啦,我設定的是 cuda ,也就是英偉達的 GPU ,因為 cpu 太慢了。
# 如果自己的不能使用 GPU 推理的話把下面這兩行改改,改成 cpu 的就可以了。
device = torch.device("cuda")
model = torch.hub.load('F:/yolov5-master', 'custom', 'F:/yolov5-master/yolov5n6.pt',
source='local', force_reload=False) # 載入本地模型
# 這裡是定義螢幕寬高 [ 其實這倆就是遊戲所對應的解析度,比如:遊戲裡 1920*1080 這裡就是 1920*1080]
game_width = 1024
game_height = 768
# 這邊就是開始實時進行遊戲視窗推理了
# 無限迴圈 ->外匯跟單gendan5.com 擷取螢幕 -> 推理模型獲取到每個敵人座標 -> 計算每個敵人中心座標 -> 挑選距離準星最近的敵人 -> 如果左鍵是按下狀態則控制滑鼠移動到敵人的身體或者頭部 ( 本文計算方式是移動到頭部 )
while True:
# 擷取螢幕
screen_record()
# 使用模型
model = model.to(device)
img = 'cfbg.bmp'
# 開始推理
results = model(img)
# 過濾模型
xmins = results.pandas().xyxy[0]['xmin']
ymins = results.pandas().xyxy[0]['ymin']
xmaxs = results.pandas().xyxy[0]['xmax']
ymaxs = results.pandas().xyxy[0]['ymax']
class_list = results.pandas().xyxy[0]['class']
confidences = results.pandas().xyxy[0]['confidence']
newlist = []
for xmin, ymin, xmax, ymax, classitem, conf in zip(xmins, ymins, xmaxs, ymaxs, class_list, confidences):
if classitem == 0 and conf > 0.5:
newlist.append([int(xmin), int(ymin), int(xmax), int(ymax), conf])
# 迴圈遍歷每個敵人的座標資訊傳入距離計算方法獲取每個敵人距離滑鼠的距離
if len(newlist) > 0:
# 存放距離資料
cdList = []
xyList = []
for listItem in newlist:
# 當前遍歷的人物中心座標
xindex = int(listItem[2] - (listItem[2] - listItem[0]) / 2)
yindex = int(listItem[3] - (listItem[3] - listItem[1]) / 2)
mouseModal = Controller()
x, y = mouseModal.position
L1 = Line(x, y, xindex, yindex)
# 獲取到距離並且存放在 cdList 集合中
cdList.append(int(L1.getlen()))
xyList.append([xindex, yindex, listItem[0], listItem[1], listItem[2], listItem[3]])
# 這裡就得到了距離最近的敵人位置了
minCD = min(cdList)
# 如果敵人距離滑鼠座標小於 150 則自動進行瞄準,這裡可以改大改小,小的話跟槍會顯得自然些
if minCD < 150:
for cdItem, xyItem in zip(cdList, xyList):
if cdItem == minCD:
# 鎖頭演算法:使用 win32api 獲取左鍵按下狀態,如果按下則開始自動跟槍
if win32api.GetAsyncKeyState(0x01):
# 控制滑鼠移動到某個點:看不懂計算方式的話看文章下面講解吧 O( ∩ _ ∩ )O
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, int(xyItem[0] - game_width // 2),int(xyItem[1] - (game_height - (xyItem[3] - xyItem[5])) // 2), 0, 0)
break
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2902271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 移動自動化測試平臺,瞄準金融行業行業
- 人民日報:遊戲產業 瞄準新賽道遊戲產業
- 【unity小技巧】實現FPS武器的瞄準放大效果(UGUI實現反向遮罩,全屏遮擋,區域性鏤空效果)UnityUGUI遮罩
- 騰訊或與快手成立合資公司,瞄準遊戲業務遊戲
- 遊戲出海歐美,廣告素材投放要瞄準哪些機會?遊戲
- 手機遊戲助力旅遊營銷 瞄準跨年齡層消費者遊戲
- 黑客組織瞄準美國電網黑客
- 戰略佈局瞄準元宇宙RMX元宇宙
- 遊戲廠商紛紛瞄準手遊工作室,收購量創5年新高遊戲
- 百度智慧雲、商湯科技瞄準了AI數字人AI
- HPE推出新一代Apollo伺服器,瞄準企業AI伺服器AI
- 聯想2017TechWorld大會舉行聯想未來瞄準AIAI
- 瞄準Windows的新興殭屍網路:KrakenWindows
- SAGI GAMES 創始人曾嶸:瞄準休閒遊戲,將“創意”轉化為“商業”GAM遊戲
- 全自動生成遊戲已成現實?暢想愷英網路構築的AI遊戲新時代遊戲AI
- 瞄準戰棋頭部,心動選擇在品質上捲到底
- 手遊社交突破口 為什麼這麼多手遊都瞄準了家園互動玩法?
- 瞄準前沿建設國際科技創新中心OSG
- 親自動手實現Python+pygame中國象棋遊戲PythonGAM遊戲
- 甲骨文成立兩個創新中心,瞄準AI等前沿技術大舉招聘AI
- 【黑客追擊】境外黑客組織提前行動,瞄準我國公司實施網路攻擊黑客
- 瞄準“電競+”,賦能城市文旅跑出“加速度”
- 盛趣遊戲:AI模擬使用者行為已實現測試全自動化遊戲AI
- 微信訂閱號實現AI自動回覆AI
- Nature 機器智慧綜述:AI如何自動生成遊戲AI遊戲
- Spring AOP 實現《自動自動填充Entity》Spring
- “追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索遊戲
- 卡巴斯基報告:70%的黑客攻擊事件瞄準Office漏洞黑客事件
- 升級配置後,樹莓派 4 瞄準了桌面市場樹莓派
- 瞄準商機,夏普於明年在美推出保安機器人!機器人
- 全自動遊戲的明天遊戲
- 自動做遊戲(2):自動生成人物行走圖遊戲
- 利用AI智慧體實現自動化公開課AI智慧體
- 用AI短影片「反哺」長影片理解,騰訊MovieLLM框架瞄準電影級連續幀生成AI框架
- Selenium自動化實現web自動化-1Web
- “Syrk”勒索病毒瞄準遊戲行業,偽裝外掛謀取鉅額贖金(內附檔案解密方法)遊戲行業解密
- 自動做遊戲(1):自動生成人物側面圖遊戲
- Sodinokibi勒索軟體瞄準政務系統,爆發趨勢上升