You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Software_Architecture/distance-judgement/tools/setup_camera_location.py

115 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
摄像头地理位置配置工具
用于设置摄像头的经纬度坐标和朝向角度
"""
import os
import sys
def update_config_file(lat, lng, heading, api_key=None):
"""更新配置文件中的摄像头位置信息"""
config_path = "src/config.py"
# 读取配置文件
with open(config_path, 'r', encoding='utf-8') as f:
content = f.read()
# 更新纬度
if "CAMERA_LATITUDE = " in content:
lines = content.split('\n')
for i, line in enumerate(lines):
if line.startswith('CAMERA_LATITUDE = '):
lines[i] = f'CAMERA_LATITUDE = {lat} # 摄像头纬度'
break
content = '\n'.join(lines)
# 更新经度
if "CAMERA_LONGITUDE = " in content:
lines = content.split('\n')
for i, line in enumerate(lines):
if line.startswith('CAMERA_LONGITUDE = '):
lines[i] = f'CAMERA_LONGITUDE = {lng} # 摄像头经度'
break
content = '\n'.join(lines)
# 更新朝向
if "CAMERA_HEADING = " in content:
lines = content.split('\n')
for i, line in enumerate(lines):
if line.startswith('CAMERA_HEADING = '):
lines[i] = f'CAMERA_HEADING = {heading} # 摄像头朝向角度'
break
content = '\n'.join(lines)
# 更新API key如果提供
if api_key and 'GAODE_API_KEY = ' in content:
lines = content.split('\n')
for i, line in enumerate(lines):
if line.startswith('GAODE_API_KEY = '):
lines[i] = f'GAODE_API_KEY = "{api_key}" # 高德地图API密钥'
break
content = '\n'.join(lines)
# 写回配置文件
with open(config_path, 'w', encoding='utf-8') as f:
f.write(content)
def main():
print("=" * 60)
print("🚁 无人机摄像头地理位置配置工具")
print("=" * 60)
print()
print("📍 请设置摄像头的地理位置信息")
print("提示: 可以通过高德地图等应用获取准确的经纬度坐标")
print()
try:
# 获取纬度
lat = float(input("请输入摄像头纬度 (例: 39.9042): "))
if not (-90 <= lat <= 90):
raise ValueError("纬度必须在-90到90之间")
# 获取经度
lng = float(input("请输入摄像头经度 (例: 116.4074): "))
if not (-180 <= lng <= 180):
raise ValueError("经度必须在-180到180之间")
# 获取朝向
heading = float(input("请输入摄像头朝向角度 (0-360°, 0为正北): "))
if not (0 <= heading <= 360):
raise ValueError("朝向角度必须在0到360之间")
# 可选设置高德API Key
print("\n🔑 高德地图API Key设置 (可选)")
print("如果您有高德开放平台的API Key请输入以获得更好的地图体验")
api_key = input("请输入高德API Key (留空跳过): ").strip()
# 更新配置
update_config_file(lat, lng, heading, api_key if api_key else None)
print("\n✅ 配置更新成功!")
print(f"📍 摄像头位置: ({lat:.6f}, {lng:.6f})")
print(f"🧭 朝向角度: {heading}°")
if api_key:
print("🔑 API Key 已设置")
print("\n🎯 建议使用步骤:")
print("1. 运行 python run.py 启动系统")
print("2. 选择Web模式获得最佳体验")
print("3. 按 'm' 键打开地图查看效果")
print("4. 按 'c' 键校准距离参数以提高精度")
except ValueError as e:
print(f"❌ 输入错误: {e}")
print("请重新运行程序并输入正确的数值")
sys.exit(1)
except Exception as e:
print(f"❌ 配置失败: {e}")
sys.exit(1)
if __name__ == "__main__":
main()