OpenCV在C ++中将矩阵与零矩阵连接起来

时间:2016-11-07 18:38:22

标签: 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?

1 个答案:

答案 0 :(得分:2)

您可以使用copyMakeBorder

    ; XDEBUG Extension
[xdebug]
zend_extension ="P:\wamp64\bin\php\php7.0.4\ext\php_xdebug-2.4.1-7.0-vc14-x86_64.dll"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.profiler_output_dir ="P:/wamp64/tmp"
xdebug.show_local_vars=0

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

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