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

发布于 2024-10-03 14:50:21 字数 59 浏览 5 评论 0原文

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

So having buffer with RGBRGBRGB... size of w*3 how to fill OpenCV Image with such data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事还在继续 2024-10-10 14:50:21

最简单的方法是使用 循环缓冲区的元素在模板化方法中

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 矩阵对象的更多信息。

The easiest way is just to loop over the elements of the buffer using the 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];
}

Of course, you need to initialize your matrix with the correct type, and set the color format, which I didn't do above. See more about the OpenCV matrix object here.

美人骨 2024-10-10 14:50:21

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

IplImage has a variable imageData. It is just a buffer. So you can simply copy your array if it have the same format as imageData buffer. If format differs then you can copy, but you will need to fill other variables of your IplImage properly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文