gpt4 book ai didi

python - 获取模板找到的对象的坐标

转载 作者:太空宇宙 更新时间:2023-11-03 21:49:26 27 4
gpt4 key购买 nike

我想为一款游戏制作一个机器人,它可以在地板上寻找特定元素,然后点击它。我设法让第一部分正确(它甚至在它周围画了一个矩形)但令人尴尬的是我无法正确获得该对象的坐标。我使用 cv2.matchTemplate 方法。这是我的代码:

import numpy as np
import pyautogui

img_bgr = cv2.imread('gra.png')
img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)

template = cv2.imread('bones2.png', 0)

w, h = template.shape[:: -1]

res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshhold = 0.90
loc = np.where( res >= threshhold)
for pt in zip(*loc[:: -1]):
cv2.rectangle(img_bgr, pt, (pt[0] + w, pt[1] + h),(0, 255, 255), 2 )
#here i wanted to move the mouse to the coordinates of a found item, however
#i cant get these two right ↓ ↓
pyautogui.moveTo( ? , ? ,duration=0.5)

cv2.imshow('znalezione', img_bgr)

cv2.waitKey()
cv2.destroyAllWindows()

我试过这个:

 pyautogui.moveTo( (pt[0] *2  + w)/2  , (pt[1] *2 + h)/2 ,duration=0.5)

但这根本行不通。谁能给我解释一下 pt 到底是什么以及如何获取坐标?

此外,这是我到目前为止所取得的成绩的屏幕截图:

enter image description here

最佳答案

根据我的理解,OpenCV 和 pyautogui 使用相同的坐标系,如示例 1920x1080 分辨率所示。

0,0       X increases -->
+---------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079

OpenCV 的cv2.rectangle 函数以矩形的左上角坐标和右下角坐标作为参数。由于您能够在图像中绘制边界框,因此您拥有要检查的 ROI 的正确坐标。来自docs moveTo 函数有两个参数:xy。假设你想将鼠标移动到边界框的中心,你可以这样做

pyautogui.moveTo(pt[0] + w/2, pt[1] + h/2, duration=0.5)

关于python - 获取模板找到的对象的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56281489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com