Самый простой способ - просто перебрать элементы буфера, используя при шаблонном методе .
unsigned char buffer[] = {1, 2, 3, ..., 18}; // RGBRGB...
cv::Mat image(2, 3);
for (int i = 0; i < 18; ++i) {
int row = i/9;
int col = (i/3)%3;
int rgb = i%3; // An index
image.at<unsigned char>(row,col+rgb) = buffer[i];
}
Конечно, вам нужно инициализировать матрицу с правильным типоми установите цветовой формат, который я не делал выше.Подробнее об объекте матрицы OpenCV здесь .