1 Star 0 Fork 0

张哲瑞/tic-tac-toe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
photo2world.py 1.80 KB
一键复制 编辑 原始数据 按行查看 历史
张哲瑞 提交于 2024-07-31 09:55 . 2024/7/31
import numpy as np
import cv2
from globals import initial_right_down_ca, initial_left_down_ca, initial_right_up_ca, initial_left_up_ca, \
initial_right_down_world, initial_right_up_world, initial_left_down_world, initial_left_up_world
def pixel_to_world(pixel_point):
"""
计算仿射变换矩阵并使用它将像素坐标转换为世界坐标
"""
# 使用全局变量定义像素坐标和世界坐标
pixel_coords = {
'right_down': initial_right_down_ca,
'left_down': initial_left_down_ca,
'right_up': initial_right_up_ca,
'left_up': initial_left_up_ca
}
world_coords = {
'right_down': initial_right_down_world,
'left_down': initial_left_down_world,
'right_up': initial_right_up_world,
'left_up': initial_left_up_world
}
src = np.array([
pixel_coords['right_down'],
pixel_coords['left_down'],
pixel_coords['right_up']
], dtype=np.float32)
dst = np.array([
world_coords['right_down'],
world_coords['left_down'],
world_coords['right_up']
], dtype=np.float32)
# 使用OpenCV计算仿射变换矩阵
affine_matrix = cv2.getAffineTransform(src, dst)
# 将像素坐标转换为世界坐标
pixel_point = np.array([pixel_point], dtype=np.float32)
world_point = cv2.transform(pixel_point[None, :, :], affine_matrix)
return world_point[0][0]
# # 示例调用
# initial_right_down_ca = [100, 200]
# initial_left_down_ca = [50, 200]
# initial_right_up_ca = [100, 150]
# initial_left_up_ca = [50, 150]
#
# initial_right_down_world = [1, 2]
# initial_left_down_world = [0.5, 2]
# initial_right_up_world = [1, 1.5]
# initial_left_up_world = [0.5, 1.5]
#
# pixel_point = (75, 175)
# world_point = pixel_to_world(pixel_point)
# print("世界坐标:", world_point)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhangzherui666/tic-tac-toe.git
git@gitee.com:zhangzherui666/tic-tac-toe.git
zhangzherui666
tic-tac-toe
tic-tac-toe
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385