Конкатенация матчей OpenCV матрицы с нулевой матрицей в С++

65
9

Мне нужно поместить матрицу вертикально с нулями сверху и снизу.

Но этот код не работает с 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?

спросил(а) 2016-11-07T21:38:00+03:00 3 года, 5 месяцев назад
1
Решение
62

Вы можете использовать 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());

ответил(а) 2016-11-07T21:55:00+03:00 3 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема