我有一個麻煩的轉換CV ::墊到std ::向量:OpenCV 2.3.1。 CV ::墊到std :: vector的投
cv::Mat m = cv::Mat_<int>::eye(3, 3);
std::vector<int> vec = m;
給了我下面的:
OpenCV Error: Assertion failed (dims == 2 && (size[0] == 1 || size[1] == 1 || size[0]*size[1] == 0)) in create, file /build/buildd-opencv_2.3.1-11-i386-tZNeKk/opencv-2.3.1/modules/core/src/matrix.cpp, line 1225
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd-opencv_2.3.1-11-i386-tZNeKk/opencv-2.3.1/modules/core/src/matrix.cpp:1225: error: (-215) dims == 2 && (size[0] == 1 || size[1] == 1 || size[0]*size[1] == 0) in function create
從mat.hpp:
template<typename _Tp> inline Mat::operator vector<_Tp>() const
{
vector<_Tp> v;
copyTo(v);
return v;
}
在CopyTo從以下代碼
和以後被執行:
//mat.hpp
template<typename _Tp> inline _OutputArray::_OutputArray(vector<_Tp>& vec) : _InputArray(vec) {}
template<typename _Tp> inline _InputArray::_InputArray(const vector<_Tp>& vec)
: flags(STD_VECTOR + DataType<_Tp>::type), obj((void*)&vec) {}
// operations.hpp
template<typename _Tp> inline Size_<_Tp>::Size_()
: width(0), height(0) {}
然後我得到一個例外。
有什麼想法?這是一個錯誤嗎?也許,我不明白什麼... 謝謝你提前!
我想將矩陣的行放入單個向量中。如果你對Octave/Matlab很熟悉,可以這樣做:m(:) –
非常好!整個矩陣是不可能的。然後我應該遍歷所有的行。不管怎樣,謝謝你! –
不確定OpenCV是否具有該功能,但您可以隨時自行完成。一次保存一行/一行(也許以後再合併)聽起來就像是一個計劃! –