您可以使用以下命令创建一个空矩阵:
Mat m;
如果您已经知道它的类型,您可以:
Mat1f m; // Empty matrix of float
如果你知道它的大小:
Mat1f m(rows,cols); // rows,cols are int
or
Mat1f m(size); // size is cv::Size
您还可以添加默认值:
Mat1f m(2,4.1f);
//
// 4.1 4.1 4.1
// 4.1 4.1 4.1
如果你想用push_back为空矩阵添加值,你可以按照@berak的建议去做:
Mat1f m;
m.push_back(Mat1f(1,3.5f)); // The first push back defines type and width of the matrix
m.push_back(Mat1f(1,9.1f));
m.push_back(Mat1f(1,2.7f));
// m
// 3.5 3.5 3.5
// 9.1 9.1 9.1
// 2.7 2.7 2.7
如果你需要push_back包含在vector<>中的数据,你应该注意将值放在矩阵中并转置它.
vector v1 = {1.1f,2.2f,3.3f,4.4f,5.5f};
vector v2 = {1.2f,2.3f,3.4f,4.5f,5.6f};
Mat1f m1(Mat1f(v1).t());
Mat1f m2(Mat1f(v2).t());
Mat1f m;
m.push_back(m1);
m.push_back(m2);
// m
// 1.1 2.2 3.3 4.4 5.5
// 1.2 2.3 3.4 4.5 5.6