1

我有一个 Point3f,我想对其进行规范化,例如除以最后一个 (z) 元素。

Point3f C_tmp;

我可以这样打印出来

cout << "C_tmp= " << C_tmp << endl;

但是,我不能只是这样做

C_tmp=C_tmp/C_tmp[3];

我使用 C++ 接口。我在文档中找不到有用的东西。任何想法?

编辑:矢量案例:

int i;
    for (i=begin; i<end; i++) {
    threeD=...[i]..;
    threeDVector.push_back(threeD);
    twoD.x= threeD.x / threeD.z;
    twoD.y= threeD.y / threeD.z;
    twoDVector.push_back(twoD);
}
4

1 回答 1

4

Point3f具有字段xyz

Point3f threeD(2, 3, 4);
Point2f twoD(threeD.x / threeD.z, threeD.y / threeD.z);

您还可以(隐式)将 a 转换Point3f为 aVec3f并按照自己的方式进行操作(远离,c++ 使用基于 0 的数组):

...
Vec3f threeDVector = threeD;
threeDVector /= threeDVector[2];

最后,我认为探索这种结构的功能的最好方法就是阅读 opencv 头文件(在这种情况下opencv2/core/types.hpp

于 2013-09-17T11:49:39.690 回答