OpenCV Добавить столбцы в матрицу - PullRequest
9 голосов
/ 12 января 2012

в OpenCV 2 и более поздних версиях существует метод Mat::resize, который позволяет добавлять любое количество строк со значением по умолчанию к вашей матрице, если есть какой-либо эквивалентный метод для столбца. и если нет, то какой самый эффективный способ сделать это. Спасибо

Ответы [ 3 ]

26 голосов
/ 03 марта 2012

Использование cv::hconcat:

Mat mat;
Mat cols;

cv::hconcat(mat, cols, mat);
3 голосов
/ 12 января 2012

Сценарий наихудшего случая: поверните изображение на 90 градусов и используйте Mat::resize(), чтобы столбцы стали строками.

2 голосов
/ 10 февраля 2012

Поскольку 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 методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...