c++ - OpenCV 矩阵与 C++ 中的零矩阵的串联

标签 c++ opencv

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

但此代码因 CV_Assert 而失败,因为填充是“空的”,用零填充:

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); 

有没有一种方法可以使用 vconcat 来填充零矩阵,或者我是否必须复制粘贴并破解 vconcat?

最佳答案

您可以使用 copyMakeBorder :

int top_padding = 3;
int bottom_padding = 3;
copyMakeBorder(dataMat, dataMat, top_padding, bottom_padding, 0, 0, BORDER_CONSTANT, Scalar(0,0,0,0));

如果你想在编译时不知道类型的情况下对矩阵进行零初始化,你应该使用 zeros :

Mat padding = Mat::zeros(dataMat.rows, dataMat.cols, datumMat.type());

关于c++ - OpenCV 矩阵与 C++ 中的零矩阵的串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472215/

相关文章:

php - 我可以使用图形 API 将通知标记为已读吗?

c++ - opencv cvLine 方法不起作用

opencv - 需要消除相机镜头变形

opencv - 高斯滤波算法在OpenCV中是如何工作的

c++ - C++ 中的字符矩阵?

c++ - 我的 boost phoenix 惰性函数出了什么问题?

opencv - 如何在 opencv 中使用矩阵 R 和 T(外部参数矩阵)转换图像?

c++ - Opencv 相机校准生成非常扭曲的图像

c++ - 如何在 Ubuntu 中使用 Eclipse CDT 调试 C++ 静态库?

c++ - assimp模型加载不加载所有网格