OpenCV:如何为每个像素填充具有每种RGB颜色值的rgb图像?

时间:2010-11-19 21:04:43

标签: c++ c opencv rgb

所以有RGBRGBRGB的缓冲区... w * 3的大小如何用这样的数据填充OpenCV图像?

2 个答案:

答案 0 :(得分: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的更多信息。

答案 1 :(得分:2)

IplImage有一个变量imageData。它只是一个缓冲区。因此,如果数组具有与imageData缓冲区相同的格式,则可以简单地复制数组。如果格式不同,那么您可以复制,但是您需要正确填充IplImage的其他变量。