C++ C+中矩阵与零矩阵的OpenCV mat串联+;

C++ C+中矩阵与零矩阵的OpenCV mat串联+;,c++,opencv,C++,Opencv,我需要在矩阵的顶部和底部垂直填充零 但此代码使用CV_断言失败,因为填充为“空”,填充为零: cv::Mat dataMat; //... cv::Mat padding(dataMat.rows, dataMat.cols, datumMat.type(), 0); std::vector<cv::Mat> matrices; matrices.push_back(padding); matrices.push_back(dataMat); matrices.push_back(p

我需要在矩阵的顶部和底部垂直填充零

但此代码使用CV_断言失败,因为填充为“空”,填充为零:

cv::Mat dataMat;
//...
cv::Mat padding(dataMat.rows, dataMat.cols, datumMat.type(), 0);
std::vector<cv::Mat> matrices;
matrices.push_back(padding);
matrices.push_back(dataMat);
matrices.push_back(padding);
cv::Mat resultMat;
cv::vconcat(matrices, resultMat); 
cv::Mat dataMat;
//...
cv::Mat padding(dataMat.rows、dataMat.cols、datumMat.type(),0);
向量矩阵;
矩阵。推回(填充);
矩阵。推回(数据垫);
矩阵。推回(填充);
cv::Mat resultMat;
cv::vconcat(矩阵、结果集);
有没有办法使用vconcat填充零矩阵,或者我必须复制粘贴并破解vconcat?

您可以使用:


如果要在编译时对矩阵进行零初始化而不知道其类型,则应使用:

您可以使用:


如果要在编译时对矩阵进行零初始化而不知道其类型,则应使用:


如果Mat::padding=Mat::zeros(…),padding.empty()==true。请显示实际代码。这对padding=Mat::zeros(dataMat.rows、dataMat.cols、datumMat.type())没有多大意义;if(padding.empty()){cout如果padding结果为空,只能是因为dataMat为空。请检查dataMat是否事实上为非空如果Mat::padding=Mat::zeros(…),padding.empty()==true。请显示实际代码。这没有多大意义。padding=Mat::zeros(dataMat.rows,dataMat.cols,datumMat.type());如果(padding.empty()){cout如果填充结果为空,则只能是因为dataMat为空。请检查dataMat是否为非空
int top_padding = 3;
int bottom_padding = 3;
copyMakeBorder(dataMat, dataMat, top_padding, bottom_padding, 0, 0, BORDER_CONSTANT, Scalar(0,0,0,0));
Mat padding = Mat::zeros(dataMat.rows, dataMat.cols, datumMat.type());