2012-12-04 16 views
10

I 2.4.3 bin mit opencv Vektor auszuführen Umwandlung zur Matrix mit dem folgenden Code:convert Vektor in OpenCV zur Matte

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

Aber es gibt einen Fehler aus und sagte:

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

Was mache ich hier falsch? Gibt es eine andere Methode, um diesen Vektor in Matrixform zu konvertieren? Vielen Dank.

+0

Können Sie diese Frage näher erläutern, warum müssen Sie diese Konvertierung durchführen, können Sie eine Matrix in opencv erstellen und sie als Vektor behandeln, wenn dies hilft. Aber ich nehme an, dass es einen Grund gibt, warum Sie eine Matrix erstellen und diese in eine Matrix konvertieren wollen. Könnten Sie ein Szenario, warum Sie brauchen, dass –

+0

tatsächlich ich benutze es für meine andere Funktion, die in meiner Frage hier beseitigt wurde. –

+0

Ich frage das, denn vielleicht gibt es einen Weg um dies zu erreichen, im Moment kann ich keinen anderen Weg als hier beantwortet sehen, d. H. Einen Vektor als eine Matrix behandeln, die in diesem Fall eine nx1 Matrix sein wird. Können Sie uns sagen, welche Funktion den Vektor ausgibt und welche Funktion die Matrix als Eingabe verwendet? –

Antwort

16

In the documentation gibt es einen Hinweis auf die Matte Konstruktor, in dem sie sagen, welche Arten von Vektor unterstützt:

„Der Konstruktor kann beliebige Typen behandeln, für die es ordnungsgemäß deklariert Datentyp ist, dh die Vektorelemente müssen Primitive Zahlen oder uni-numerische Tupel von Zahlen sein. Mixed-Typ Strukturen werden nicht unterstützt, natürlich. "

So die Art Sie wird nicht verwenden unterstützt wird und Sie deshalb einen Fehler.

3

Sie versuchen, Matrix vom Typ "Komponenten" zu erstellen. Es würde nicht funktionieren. Mat unterstützt nur bestimmte Datentypen, wie Point2d, Point3d, etc. Wenn Sie mit ihnen versuchen, sollte es funktionieren.