Итак, имея буфер с RGBRGBRGB ... размер w * 3 как заполнить OpenCV Image такими данными?OpenCV: как заполнить изображение rgb, имеющее значения для каждого из цветов RGB для каждого пикселя?
0
A
ответ
4
Самый простой способ - просто перебрать элементы буфера с помощью at templated method.
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 here.
2
IplImage имеет переменную imageData. Это просто буфер. Таким образом, вы можете просто скопировать массив, если он имеет тот же формат, что и буфер imageData. Если формат отличается, то вы можете копировать, но вам нужно будет правильно заполнить другие переменные вашего IplImage.