Преобразовать вектор в мат в OpenCV

Я использую opencv 2.4.3 для преобразования вектора в матрицу, используя следующий код:

struct Component
{
    cv::Rect box;
    double area;
    double circularity; 
}

int main ( ... )
{
     cv::vector < Component > components;         
     cv::Mat componentMat ( components, true );
     std::cout << componentMat;
     return 0; 
}

Но он выдает ошибку, говоря:

OpenCV Error: Unsupported format or combination of formats() in unknown function, file ...\opencv\modules\core\src\out.cpp, line 111

Что я здесь делаю неправильно? Есть ли другой способ преобразования этого вектора в матричную форму? Спасибо.

Ответ 1

В в документации есть ссылка на конструктор Mat, в котором они говорят, какие типы векторов поддерживаются:

"Конструктор может обрабатывать произвольные типы, для которых существует должным образом объявленный DataType, то есть элементы vector должны быть примитивные числа или унифицированные числовые корни чисел. Смешанный тип структуры не поддерживаются, конечно."

Значит тип, который вы используете, не поддерживается, и поэтому вы получаете сообщение об ошибке.

Ответ 2

Вы пытаетесь создать матрицу типа "компоненты". Это не сработает. Mat поддерживает только определенные типы данных, такие как Point2d, Point3d и т.д. Если вы попытаетесь с ними, он должен работать.