python - 将度数映射到 360 度图像上的 (x,y) 像素
问题描述
我希望在给定 Altitude° 和 Azimuth° 的 GoPro Max 的 2d 球面图像上绘制点。
这是您可以假设的:
- 图像的中心始终朝南
- 直视赤道时,图像总是水平的。
这是我所知道的:
- 图像大小为 5760x2880,这意味着赤道垂直方向为 1440 像素。
- 我在网上找到了一张图片,并将其标记为方位角从左到右,高度角从上到下。您可以在此处找到该图像
我希望这能让您更好地了解我在这里要做的事情。
简而言之,我正在想象一种方法,例如:
ConvertCoords(Azimuth°, Altitude°){
...
return (x,y)
}
这可能吗?我可能会使用 Python 来实现它,但我愿意接受建议。非常感谢任何可以为我指明正确方向的信息!
编辑:我应该提到,根据我的研究,我相信 GoPro Max 使用的是等角投影。我能够将我附在其中一张 360 度全景照片上的图像叠加起来,并手动绘制出一些似乎正确的数据。
解决方案
对于等角投影,映射是直接和线性的。
def convertCoords( azimuth, altitude ):
# Assumptions:
# - Both values are in radians
# - South is an azimuth of 0, negative to the left, range -pi to +pi
# - Altitude range is -pi/2 to +pi/2, negative down
x = 2880 + (azimuth * 2880 / math.pi)
y = 1440 - (altitude * 2880 / math.pi)
return x,y
如果您更愿意使用度数,请将“math.pi”更改为“180”。
推荐阅读
- python-3.x - 如何使用 Windows 批处理文件执行 Python entry_point 脚本?
- ios - Firebase 用户重新身份验证初始化错误
- excel - Excel求解器说明
- javascript - 使用 tfjs 从 ML5 训练的模型进行预测时,准确性降低
- python - sqlalchemy.exc.OperationalError
- css - 解决方法奇怪的三星互联网浏览器全屏行为
- apache-spark - 结构化流如何确保文件接收器的一次性写入语义?
- php - 为什么我必须使用 session_start() 使会话在 Laravel 5.7.28 中持续存在
- awk - Bash,awk,从文件中获取特定字符串
- python - 了解 docx 文件中的书签