2016-05-19 4 views
0

Ich verwende derzeit OpenCV fitLine() Funktion.OpenCV: Fixed Size Error für fitLine() Funktion

Dies ist mein Code:

float lineParams[16]; 
Mat lineParamsMat(Size(4,4), CV_32F, lineParams); 
Point2f points[6]; 

//point parameters for line 
Mat point_mat(Size(1, 6), CV_32FC2, points); 

//The line is stored in a row in the lineParamsMat Matrix 
fitLine (point_mat, lineParamsMat.row(i), CV_DIST_L2, 0, 0.01, 0.01); 

Der Fehler in der letzten Zeile auftritt. Die Fehlermeldung lautet wie immer:

OpenCV Error: Assertion failed (!fixedSize() || ((Mat*)obj)->size.operator()() == Size(_cols, _rows)) in create, file /Applications/opencv-3.1.0/modules/core/src/matrix.cpp, line 2232 
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /Applications/opencv-3.1.0/modules/core/src/matrix.cpp:2232: error: (-215) !fixedSize() || ((Mat*)obj)->size.operator()() == Size(_cols, _rows) in function create 

Hat jemand diesen Fehler schon einmal gesehen?

+0

Können Sie anstelle der beiden 'Mat's' 'std :: vector ' und 'cv :: Vec4f' verwenden? Das hat für mich funktioniert. Das Problem wird etwas damit zu tun haben, wie Sie eines der 'Mat's strukturieren. Wenn Sie den Stack-Trace sehen, können Sie besser sehen, was er eigentlich ist. –

+0

Das ist eine gute Idee - ich werde es versuchen! Wie kann ich eine detailliertere Stapelverfolgung anzeigen? –

+0

Führen Sie es in einem Debugger aus und beenden Sie es, wenn die Ausnahme ausgelöst wird. Der genaue Prozess hängt von den verwendeten Tools ab. Sie benötigen Debugging-Symbole, damit dies funktioniert. –

Antwort

0

stellt sich heraus, dass die Änderung von lineParamsMat.row() zu lineParamsMat.col() funktioniert!

Verwandte Themen