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.
6.2 KiB
6.2 KiB
摄像头朝向自动配置功能指南 🧭
功能概述
本系统现在支持自动获取设备位置和朝向,将本地摄像头设置为面朝使用者,实现智能的摄像头配置。
🎯 主要功能
1. 自动GPS定位
- Windows系统: 使用Windows Location API获取精确GPS位置
- 其他系统: 使用IP地理定位作为备选方案
- 精度: GPS可达10米内,IP定位约10公里
2. 设备朝向检测
- 桌面设备: 使用默认朝向算法(假设用户面向屏幕)
- 移动设备: 支持陀螺仪和磁力计朝向检测
- 智能计算: 自动计算摄像头应该面向用户的角度
3. 自动配置应用
- 实时更新: 自动更新配置文件和运行时参数
- 地图同步: 自动更新地图上的摄像头位置标记
- 即时生效: 配置立即应用到距离计算和人员定位
🚀 使用方法
方法一:启动时自动配置
python main_web.py
系统会检测到默认配置并询问是否自动配置:
🤖 检测到摄像头使用默认配置
是否要自动配置摄像头位置和朝向?
• 输入 'y' - 立即自动配置
• 输入 'n' - 跳过,使用Web界面配置
• 直接回车 - 跳过自动配置
🔧 请选择 (y/n/回车): y
方法二:独立配置工具
# 完整自动配置
python tools/auto_configure_camera.py
# 仅测试GPS功能
python tools/auto_configure_camera.py --test-gps
# 仅测试朝向功能
python tools/auto_configure_camera.py --test-heading
方法三:Web界面配置
- 启动Web服务器:
python main_web.py
- 打开浏览器访问
https://127.0.0.1:5000
- 在"🧭 自动位置配置"面板中:
- 点击"📍 获取位置"按钮
- 点击"🧭 获取朝向"按钮
- 点击"🤖 自动配置摄像头"按钮
📱 Web界面功能详解
GPS位置获取
// 使用浏览器Geolocation API
navigator.geolocation.getCurrentPosition()
支持的浏览器:
- ✅ Chrome/Edge (推荐)
- ✅ Firefox
- ✅ Safari
- ❌ IE (不支持)
权限要求:
- 首次使用需要授权位置权限
- HTTPS环境下精度更高
- 室外环境GPS信号更好
设备朝向检测
// 使用设备朝向API
window.addEventListener('deviceorientation', handleOrientation)
支持情况:
- 📱 移动设备: 完全支持(手机、平板)
- 💻 桌面设备: 有限支持(使用算法估算)
- 🍎 iOS 13+: 需要明确请求权限
⚙️ 技术实现
后端模块
1. OrientationDetector (src/orientation_detector.py
)
- GPS位置获取(多平台支持)
- 设备朝向检测
- 摄像头朝向计算
- 配置文件更新
2. WebOrientationDetector (src/web_orientation_detector.py
)
- Web API接口
- 前后端数据同步
- 实时状态管理
前端功能
JavaScript函数
requestGPSPermission()
- GPS权限请求requestOrientationPermission()
- 朝向权限请求autoConfigureCamera()
- 自动配置执行manualConfiguration()
- 手动配置入口
API接口
POST /api/orientation/auto_configure
- 自动配置POST /api/orientation/update_location
- 更新GPSPOST /api/orientation/update_heading
- 更新朝向GET /api/orientation/get_status
- 获取状态
🔧 配置原理
朝向计算逻辑
def calculate_camera_heading_facing_user(self, user_heading: float) -> float:
"""
计算摄像头朝向用户的角度
摄像头朝向 = (用户朝向 + 180°) % 360°
"""
camera_heading = (user_heading + 180) % 360
return camera_heading
坐标转换
def calculate_person_position(self, pixel_x, pixel_y, distance, frame_width, frame_height):
"""
基于摄像头位置、朝向和距离计算人员GPS坐标
使用球面几何学进行精确计算
"""
# 像素到角度转换
horizontal_angle_per_pixel = self.camera_fov / frame_width
horizontal_offset_degrees = (pixel_x - center_x) * horizontal_angle_per_pixel
# 计算实际方位角
person_bearing = (self.camera_heading + horizontal_offset_degrees) % 360
# 球面坐标计算
person_lat, person_lng = self._calculate_destination_point(
self.camera_lat, self.camera_lng, distance, person_bearing
)
📋 系统要求
环境要求
- Python 3.7+
- 现代Web浏览器
- 网络连接(GPS定位需要)
Windows特别要求
# 安装Windows位置服务支持
pip install winrt-runtime winrt-Windows.Devices.Geolocation
移动设备要求
- HTTPS访问(GPS权限要求)
- 现代移动浏览器
- 设备朝向传感器支持
🔍 故障排除
GPS获取失败
常见原因:
- 位置权限被拒绝
- 网络连接问题
- GPS信号不佳
解决方案:
- 检查浏览器位置权限设置
- 移动到室外或窗边
- 使用IP定位作为备选
- 手动输入坐标
朝向检测失败
常见原因:
- 设备不支持朝向传感器
- 浏览器兼容性问题
- 权限被拒绝
解决方案:
- 使用支持的移动设备
- 更新到现代浏览器
- 允许设备朝向权限
- 使用手动配置
配置不生效
可能原因:
- 配置文件写入失败
- 权限不足
- 模块导入错误
解决方案:
- 检查文件写入权限
- 重启应用程序
- 查看控制台错误信息
💡 使用建议
最佳实践
- 首次配置: 使用Web界面进行配置,可视化效果更好
- 定期更新: 位置变化时重新配置
- 精度要求: GPS环境下精度更高,室内可用IP定位
- 设备选择: 移动设备朝向检测更准确
注意事项
- 隐私保护: GPS数据仅用于本地配置,不会上传
- 网络要求: 初次配置需要网络连接
- 兼容性: 老旧浏览器可能不支持某些功能
- 精度限制: 桌面设备朝向检测精度有限
📚 相关文档
- MAP_USAGE_GUIDE.md - 地图功能使用指南
- MOBILE_GUIDE.md - 移动端使用指南
- HTTPS_SETUP.md - HTTPS配置指南
🎯 快速开始: 运行 python main_web.py
,选择自动配置,享受智能的摄像头定位体验!