Как получить полный доступ к одному измерению в OpenCV мат?

0

Хорошо, моя проблема заключается не в доступе к одному элементу из мата, но я хочу получить весь мат, пока фиксируется одно измерение. Скажем, у нас есть трехмерная матрица, и я хочу получить доступ к третьему измерению, которое должно возвращать циклы строк * cols. В Matlab это очень просто, скажем, что A - трехмерная матрица (3 * 3 * 3), если мы хотим получить доступ к третьему измерению, тогда просто используйте A (:,:, 1), A (:,:, 2) A (:,:, 3). Но как мы должны работать в OpenCV? Кажется, что OpenCV не предоставил этот метод? Я спрашиваю об этом, потому что у меня есть вектор кадров Mat: Vector, каждый элемент в векторе представляет собой двухмерное серое изображение. Я хочу изменить векторный формат в трехмерный формат Mat. Но я просто не знаю, как его скопировать. Идеальный путь должен быть:

for(int i=0; i<frames.size(); i++) {
    A(:,:,i) = frames[i].clone();
}

Как мне это сделать? Благодарю!

Теги:
opencv
image-processing

1 ответ

2

Чтобы ответить на ваш конкретный вопрос о том, как объединить 3 канала в одно изображение, вы должны использовать merge следующим образом:

merge(frames, A);

Для более общего вопроса о том, как получить доступ к 2D-плоскостям 3D Mat, мы надеемся, что этот урок даст вам некоторое представление. В частности, как элементы B, G и R Мата чередуются на каждой строке, как это (они имеют гораздо лучшее изображение в учебнике):

      | Col 1  |  Col 2  |  Col 3  |  Col 4  |...
Row 1 |B  G  R | B  G  R | B  G  R | B  G  R |...
Row 2 |B  G  R | B  G  R | B  G  R | B  G  R |...
Row 3 |B  G  R | B  G  R | B  G  R | B  G  R |...
...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню