OpenCV: как заполнить RGB-изображение, имеющее значения для каждого из цветов RGB для каждого пикселя? - PullRequest
0 голосов
/ 20 ноября 2010

Итак, имея буфер с RGBRGBRGB ... размером w * 3, как заполнить OpenCV Image такими данными?

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

Самый простой способ - просто перебрать элементы буфера, используя при шаблонном методе .

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 здесь .

2 голосов
/ 20 ноября 2010

IplImage имеет переменную imageData. Это просто буфер. Таким образом, вы можете просто скопировать ваш массив, если он имеет тот же формат, что и буфер imageData. Если формат отличается, вы можете скопировать, но вам нужно будет правильно заполнить другие переменные вашего IplImage.

...