在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并跳过一步?
答案 0 :(得分: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
答案 1 :(得分:0)
从你可以看到的Aruco source流插入运算符,它正在使用:
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
访问它。