2010-11-19 189 views

回答

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的其他变量。

相关问题