В 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 набора чисел, но на самом деле они не являются доступным атрибутом класса через markername.attributename. Единственный способ получить их вывод — через cout. Все остальное получает мне адрес, например 0xbf76ea14
Итак, два возможных ответа я вижу:
1) Самый простой способ получить строку после cout и получить ее в строку, с которой я могу работать
2) Любой способ обмануть его, думая, что его печать заставляет и пропустить шаг?
Вы не можете программно получить вещи, которые уже были отправлены 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
От Аруко источник вы можете увидеть для оператора вставки потока, который он использует:
for (int i=0;i<4;i++)
str<<"("<<M[i].x<< ","<<M[i].y<<") ";
Предполагая, что Маркеры имеют тип aruno::Marker
Вы должны быть в состоянии просто использовать Markers[0].x
чтобы получить значение х первой точки.
Если вместо этого Маркеры имеет тип std::vector<aruno::Marker>
тогда вы можете получить к нему доступ, используя Markers[0][0].x
,