-3

在 ARuco 中,标记是一个自定义类。

使用这条线: cout<<Markers[0];标记在哪里vector<Marker>

可以输出以下示例:185=(61.277,163.281) (186.9,174.062) (182.589,293.509) (55.8044,296.465) Txyz=-999999 -999999 -999999 Rxyz=-999999 -999999 -999999

我需要前 4 组数字,但是 afaik 它们不是通过markername.attributename 类的可访问属性。让它们输出的唯一方法是通过 cout。其他一切都给我地址,例如0xbf76ea14

所以我可以看到两个可能的答案:1)在 cout 之后检索行并将其放入我可以使用的字符串中的最简单方法 2)任何方式欺骗它认为它的打印是 cout 并跳过一个步骤?

4

2 回答 2

0

Aruco 源代码中,您可以看到它正在使用的流插入运算符:

for (int i=0;i<4;i++) str<<"("<<M[i].x<< ","<<M[i].y<<") ";

假设 Markers 是类型aruno::Marker,您应该能够只使用Markers[0].x来获取第一个点的 x 值。

如果相反 Markers 是类型,std::vector<aruno::Marker>那么您可以使用Markers[0][0].x.

于 2014-04-28T05:18:01.807 回答
0

您不能以编程方式检索已发送到cout.

您可以将项目输出到内存缓冲区:

#include <sstream>
#include <ostream>
#include <string>

// ...

std::ostringstream oss;
oss << Markers[0];
std::string the_output = oss.str();

// you write some code to parse out the info you want from this string
于 2014-04-28T05:14:13.070 回答