Поскольку OpenCV хранит элементы строк матрицы последовательно один за другим, прямого метода увеличения размера столбца не существует, но я привожу себе два решения для вышеуказанного вопроса:
Сначала, используя следующий метод (порядок копирования элементов меньше, чем у других методов), вы также можете использовать аналогичный метод, если хотите вставить несколько строк или столбцов, не относящихся конкретно к концу матриц.
void resizeCol(Mat& m, size_t sz, const Scalar& s)
{
Mat tm(m.rows, m.cols + sz, m.type());
tm.setTo(s);
m.copyTo(tm(Rect(Point(0, 0), m.size())));
m = tm;
}
А другой, если вы настаиваете на том, чтобы не включать даже копирование порядка данных в ваши алгоритмы, то лучше создать матрицу с большим количеством строк и столбцов и запустить алгоритм с меньшей подматрицей, а затем увеличить размер матрицы. Mat::adjustROI
методом.