我有一个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);
}
答案 0 :(得分:3)
Point3f
包含字段x
,y
和z
:
Point3f threeD(2, 3, 4);
Point2f twoD(threeD.x / threeD.z, threeD.y / threeD.z);
您也可以(隐式)将Point3f
转换为Vec3f
并按照您的方式进行操作(远离,c ++使用基于0的数组):
...
Vec3f threeDVector = threeD;
threeDVector /= threeDVector[2];
最后,我认为探索此类结构功能的最佳方法只是读取opencv头文件(在本例中为opencv2/core/types.hpp
)