convert vector to mat in OpenCV

22,384

Solution 1

In the documentation there is a reference to the Mat constructor in which they say which types of vector are supported:

"The constructor can handle arbitrary types, for which there is properly declared DataType , i.e. the vector elements must be primitive numbers or uni-type numerical tuples of numbers. Mixed-type structures are not supported, of course."

So the type you are using is not supported and therefore you get an error.

Solution 2

You are trying to create Matrix of type "components". It would not work. Mat supports only specific data types, like Point2d, Point3d, etc. If you try with them, it should work.

Share:
22,384
E_learner
Author by

E_learner

Updated on July 09, 2022

Comments

  • E_learner
    E_learner almost 2 years

    I am using opencv 2.4.3 to perform vector to matrix conversion using the following code:

    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; 
    }
    

    But it gives out an error, saying:

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

    What am I doing wrong here? Is there any other method to convert this vector into matrix form? Thank you.