2016-05-19 50 views
0

我目前使用OpenCV的fitLine()函數。OpenCV:fitLine()的固定大小錯誤函數

這是我的代碼:

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

在最後一行出現的錯誤。錯誤消息一如既往地清楚:

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 

有沒有人遇到過此錯誤?

+0

你可以使用'std :: vector '和'cv :: Vec4f'來代替兩個'Mat's嗎?這對我有效。這個問題與你如何構建「Mat」之一有關。看到堆棧跟蹤將有助於更多地瞭解它的實際情況。 –

+0

這是個好主意 - 我會試試!我如何查看更詳細的堆棧跟蹤? –

+0

在調試器中運行它,並在拋出異常時停止。確切的過程取決於您使用的工具。你將需要調試符號才能工作。 –

回答

0

事實證明,將lineParamsMat.row()更改爲lineParamsMat.col()的工作原理!