python - 在坐标系opencv python之间转换坐标
问题描述
square_1 的角坐标 = (0, 0, 1920, 1080)。然后我使用像这样的 numpy 切片将 square_2 定义为第一平方内的较小 ROI roi = square_1[y1:y2, x1:x2]
。然后我使用调整 square_1 的大小square_resize = cv2.resize(square_1, (960, 540), interpolation = cv2.INTER_AREA)
。但是,现在我的投资回报率不再准确。我有一个工具可以告诉我鼠标位置的屏幕坐标,这就是我找到 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()
推荐阅读
- angular - Visual Studio 中的 Angular 扩展问题
- javascript - TypeError:从 API 获取时无法读取未定义的属性“地图”
- javascript - 如何通过迭代向对象添加新属性?
- typescript - Typescript - How to correctly achieve code decoupling?
- javascript - Showing another paper if the first paper is full with React
- spring-boot - SpringBoot RSockets Kotlin - Missing 'rsocketResponse'
- python - Is there a way to use pandas to_excel while keeping destination format?
- javascript - TypeScript:根据接口使用字符串中的每个键类型填充 JSON 对象
- php - Nginx response with bad gateway when fetching large data
- ios - 如果多次调用`NEPacketTunnelflow`方法`readPacketsWithCompletionHandler`会发生什么?