0
我試圖使用SVD求解方程系統:cv::SVD::solveZ(A, x);
,但A
需要是Matrix。 OpenCV不提供任何std::list
到cv::Mat
的轉換。所以我的問題是,是否有一種聰明的方式來轉換它而不必將std::list
轉換爲std::vector
。使用OpenCV將std :: list轉換爲cv :: Mat使用OpenCV
矩陣A
是一個3xN矩陣。我的清單包含N
cv::Point3d
元素。
我的代碼看起來是這樣的:
std::list<cv::Point3d> points; // length: N
cv::Mat A = cv::Mat(points).reshape(1); // that's how I do it with a std::vector<cv::Point3d>
cv::Mat x;
cv::SVD::solveZ(A, x); // homogeneous linear equation system Ax = 0
如果有人有關於它的想法,那麼請告訴我。
對不起,但我不禁要問:matPoint是一個3xN的三維矩陣(或者至少被OpenCV視爲)?如果我這樣寫,matPoints有一行和N列。這導致x具有N行和1列。但x應該是1x3 ... – jkl
對不起,我混合了行和列。我編輯了答案。現在'matPoints'有(points.size())行3列。 @jkl – akarsakov
啊,好的。涼。謝謝。我不是用在包括Vec3d元素的矩陣中。這就是爲什麼我不得不再次問。 – jkl