【发布时间】:2010-11-19 21:04:42
【问题描述】:
那么有 RGBRGBRGB...大小为 w*3 的缓冲区如何用这些数据填充 OpenCV 图像?
【问题讨论】:
那么有 RGBRGBRGB...大小为 w*3 的缓冲区如何用这些数据填充 OpenCV 图像?
【问题讨论】:
最简单的方法是使用 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 的其他变量。
【讨论】: