【发布时间】:2011-11-23 07:30:14
【问题描述】:
我需要使用队列来保持为每个轮廓生成旋转和平移矩阵(使用cvFindExtrinsicCameraParams2())。
但是当我从队列中弹出元素时,我只能得到同一对旋转和平移的副本。
我怀疑它与指针有关,但是当我试图避免 struct 中的指针时,cvFindExtrinsicCameraParams2() 抛出了异常。如何解决这个问题?
//------------A.h------------------
struct RotMat{
CvMat *rotation_;
CvMat *translation_;
};
//-----------B.h-------------------
class B {
private:
CvMat *rotation;
CvMat *translation;
}
//-----------B.cpp-----------------
#include "A.h"
#include "B.h"
void functionx(){
queue<RotMat> rtq;
// start loop
// cvFindExtrinsicCameraParams2(&object_points,&image_points,
// intrinsic,distortion,
// rotation,translation);
RotMat rt = {rotation, translation};
rtq.push(rt);
// end loop
while(!rtq.empty()) { //assume rtq has n elements
RotMat rt_ = rtq.front();
rtq.pop();
cout<< rt_.translation_->data.fl[1]; // the same value pair is
cout<< rt_.rotation->data.fl[1]; // printed in all n iterations
}
}
测试结果
Total markers detected = 2
Marker 1: Translation: -249.227
Rotation: -0.0124926
Marker 2: Translation: -249.227
Rotation: -0.0124926
【问题讨论】:
标签: c++ pointers opencv struct