【发布时间】:2022-11-15 15:35:22
【问题描述】:
我的代码:
from mss import mss
import math
import cv2
import numpy as np
import torch
model = torch.hub.load(r'yolov5-master', 'custom', path=r'8.pt', source='local')
with mss() as sct:
monitor = {"top": 220, "left": 640, "width": 640, "height":640}
while True:
screenshot = np.array(sct.grab(monitor))
screenshot = cv2.cvtColor(screenshot, cv2.COLOR_BGR2RGB)
results = model(screenshot, size=640)
df = results.pandas().xyxy[0]
distances = []
closest = 1000
for i in range(len(results.xyxy[0])):
try:
xmin = int(df.iloc[i, 0])
ymin = int(df.iloc[i, 1])
xmax = int(df.iloc[i, 2])
ymax = int(df.iloc[i, 3])
centerX = (xmax + xmin) / 2 + xmin
centerY = (ymax + ymin) / 2 + ymin
distance2 = math.sqrt(((centerX - 320) ** 2) + ((centerY - 320) ** 2))
distances.append(distance2)
if closest > distances[i]:
closest = distances[i]
closestEnemy = i
现在唯一的问题是它似乎没有找到最近的敌人,我的数学错了吗?如果我的数学应该是错误的,我该如何改进它?此外,如果我的数学是正确的,我该如何改进它以实现获得最近实体的目标?任何帮助都会非常感激。提前感谢所有投入时间帮助我的人:)
【问题讨论】:
-
嘿@ChristophRackwitz,谢谢你的遮阳篷,你需要哪些信息?我很乐意添加它。
-
如果你需要复习数学:思考
(xmax + xmin) / 2 + xmin的含义,你可能想要一些稍微不同的东西。 -- MRE 表示 MRE。这个问题缺少输入数据。你没有说它是什么游戏,你没有提供屏幕截图数据......你的整个问题没有解释你在做什么或为什么。您只是跳入问题中,希望读者将难题拼凑起来。 -
它基本上是用于用 python 编写的人体检测软件。它与 mss 和 CV2 一起使用,因此您可以有一个实时窗口来显示对人类的检测。
标签: python pandas math pytorch mss