OpenCV:如何填充每个像素的每个RGB颜色值的RGB图像?
答
最简单的方法就是使用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。
答
IplImage有一个可变的imageData。它只是一个缓冲区。所以你可以简单地拷贝你的数组,如果它与imageData缓冲区具有相同的格式。如果格式不同,您可以复制,但您需要正确填写IplImage的其他变量。