在坐标系 opencv python 之间转换坐标

Translate coordinates between coordinate systems opencv python

square_1的角坐标=(0, 0, 1920, 1080)。然后,我使用像 roi = square_1[y1:y2, x1:x2] 这样的 numpy 切片将 square_2 定义为第一个方块内的较小 ROI。然后我使用 square_resize = cv2.resize(square_1, (960, 540), interpolation = cv2.INTER_AREA) 调整 square_1 的大小。但是,现在我的投资回报率不再准确。我有一个工具可以告诉我鼠标位置的屏幕坐标,这是我找到 ROI 尺寸的方法,但是我需要一个函数来转换我找到的 ROI 坐标,给定 square_1 的坐标,在square_resize.

坐标项

编辑: 使用 Panda50 的答案解决。 grab_screen() 是我自己的截屏自定义函数。这是我的代码,如果它可以帮助任何人。它不会提供 100% 准确的坐标,但您可以尝试一些并缩小范围。

from cv2 import cv2
import numpy as np

y1 = int(92 / 2)
y2 = int(491 / 2)
x1 = int(233 / 2)
x2 = int(858 / 2)

# grab screen and convert to RGB
screen = grab_screen(region = (0, 0, 1920, 1080))
screen = cv2.cvtColor(screen, cv2.COLOR_BGR2RGB)

# resize screen
screen = cv2.resize(screen, (960, 540), interpolation = cv2.INTER_AREA)

# define ROI
roi = screen[y1:y2, x1:x2].copy()

cv2.imshow('roi', roi)

cv2.waitKey()
cv2.destroyAllWindows()

在python中,=将一个变量与另一个变量关联起来。通过更改 square_1 您还将更改 roi .

你必须使用:

roi = square_1[y1:y2, x1:x2].copy()