这个距离的计算需要建立在得知平移矩阵的计算上,想要了解平移矩阵获取的可以移步:https://www.cnblogs.com/nobodyx/p/17297244.html
先看一下代码
#include <iostream>
#include <cmath>
using namespace std;
double distance(double x1, double y1, double z1, double x2, double y2, double z2) {
return sqrt(pow(x1-x2, 2) + pow(y1-y2, 2) + pow(z1-z2, 2));
}
double getDistance(double dx, double dy, double dz) {
// 相机到物体的距离等于平移矩阵中的位移量的模
return distance(0, 0, 0, dx, dy, dz);
}
int main() {
double dx, dy, dz;
dx = -242.2960250467628;
dy = -188.0552606030399;
dz = 362.0516200001606;
//cout << "请输入相机在x、y、z三个方向上的平移量:" << endl;
//cin >> dx >> dy >> dz;
double d = getDistance(dx, dy, dz);
cout << "相机到物体的距离为:" << d << endl;
return 0;
}
1.编写求距离的函数
getDistence这个函数不过多解释了大家都可以看懂
2.求距离
这里我已经知道了平移矩阵,所以需要先求解平移矩阵,再调用函数求解距离。
标签:平移,double,矩阵,相机,OpenCV,dz,dx,dy,装甲 From: https://www.cnblogs.com/nobodyx/p/17322200.html