C++ 在cv::Point3d和cv::Vec3d之间添加或转换

C++ 在cv::Point3d和cv::Vec3d之间添加或转换,c++,opencv,C++,Opencv,由于它们都有三个元素,因此在这两种类型之间添加重载加法运算符似乎是合乎逻辑的。或者,从设计的角度来看,这是没有意义的 但由于这并不存在,我们必须首先将Vec3d转换为Point3d。提到有一种方法可以转换它们,但我看不到。我所能做的就是这样: void vecToPoint(const cv::Vec3d & v) { cv::Point3d p; p.x = v[0]; p.y = v[1]; p.z = v[2]; } 谢谢cv::Point3\u有

由于它们都有三个元素,因此在这两种类型之间添加重载加法运算符似乎是合乎逻辑的。或者,从设计的角度来看,这是没有意义的

但由于这并不存在,我们必须首先将
Vec3d
转换为
Point3d
。提到有一种方法可以转换它们,但我看不到。我所能做的就是这样:

void vecToPoint(const cv::Vec3d & v)
{
    cv::Point3d p;
    p.x = v[0];
    p.y = v[1];
    p.z = v[2];
}
谢谢

cv::Point3\u
有一个。请注意,
Point3d
Vec3d
只是带有
T=double的typedef。因此,应该可以简单地做到这一点

cv::Point3d p{v};//或p(v)或p=v;你明白了。
// ...
cv::Point3\u
有一个接受通用
cv::Vec
。请注意,
Point3d
Vec3d
只是带有
T=double的typedef。因此,应该可以简单地做到这一点

cv::Point3d p{v};//或p(v)或p=v;你明白了。
// ...