相机标定后得到相机视域,并根据相机视域求取摄像机位置和摄像机方位角...

相机标定后得到相机视域,并根据相机视域求取摄像机位置
摄像机⽅位⾓
相机标定将图像坐标和地理坐标联系起来,可以得到相机视域,并根据视域可得到相机的点位置以及相机⽅位⾓
1、利⽤相机视域求相机位置,即视域两条线的交点,利⽤直线⽅程求解:
2、相机⽅位⾓的求解,思路是:⾸先求出视域中点坐标,中点坐标的连线与正北⽅向的夹⾓即为相机⽅位⾓。
DD LM0558
看了⽹上众多代码,参考其中⼀篇,改进后,在此附上⽅位⾓求解的c++版本算法:
/*根据两点经纬度坐标来求取该直线与正北⽅向的夹⾓,即⽅位⾓*/ #include<iostream>
身份通认证系统#include<math.h>
#include<string.h>
using namespace std;
int main()
{
double pi=3.1415926;
//地球纵横轴半径
double Rc = 6378137;
double Rj = 6356725;
double longitude1, latitude1, longitude2, latitude2;//经纬度
double m_radlon1, m_radlat1, m_radlon2, m_radlat2;//转为弧度制 double Ec1, Ed1, Ec2, Ed2;
水咀//输⼊两点经纬度坐标
longitude1 = 119.983875;
latitude1 = 31.81912509;
longitude2 = 119.9837622;
latitude2= 31.81839832;
//转化为弧度制
框计算m_radlon1 = longitude1 * pi/180;
m_radlat1 = latitude1 * pi / 180;
m_radlon2 = longitude2 * pi / 180;
m_radlat2 = latitude2 * pi / 180;
//
Ec1 = Rj + (Rc - Rj)*(90.0 - latitude1) / 90.0;
Ed1 = Ec1 * cos(m_radlat1);
Ec2 = Rj + (Rc - Rj)*(90.0 - latitude2) / 90.0;
Ed2 = Ec2 * cos(m_radlat2);
double dx, dy;
dx = (m_radlon2 - m_radlon1)*Ed1;
dy = (m_radlat2 - m_radlat1)*Ec1;
double angle = 0;//⽅位⾓
angle = atan(abs(dx / dy)) * 180 / pi;
double dLo, dLa;
dLo = longitude2 - longitude1;
dLa = latitude2 - latitude1;
if (dLo > 0 && dLa <= 0)
{
angle = (90 - angle) + 90;
}
else if (dLo <= 0 && dLa < 0)
{
angle += 180;
}
else if (dLo < 0 && dLa >= 0)
{
angle = (90 - angle) + 270;
}
else
{
angle = angle;
}
地质建模
cout << "⽅位⾓是:" << angle << endl;CCSVC
return 0;
}

本文发布于:2024-09-23 06:30:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/294075.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视域   坐标   弧度   求取   位置   求解   得到
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议