c – 如何在OpenCV中创建空Mat?
发布时间:2020-12-16 03:40:05 所属栏目:百科 来源:网络整理
导读:如何在OpenCV中创建空Mat?创建后我想使用push_back方法在Mat中推送行. 就像是: Mat M(0,3,CV_32FC1); 或唯一的选择是: Mat M;M.converTo(M,CV_32FC1); ? 解决方法 您可以使用以下命令创建一个空矩阵: Mat m; 如果您已经知道它的类型,您可以: Mat1f m;
如何在OpenCV中创建空Mat?创建后我想使用push_back方法在Mat中推送行.
就像是: Mat M(0,3,CV_32FC1); 或唯一的选择是: Mat M; M.converTo(M,CV_32FC1); ? 解决方法
您可以使用以下命令创建一个空矩阵:
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<float> v1 = {1.1f,2.2f,3.3f,4.4f,5.5f}; vector<float> 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |