首页 > 解决方案 > 如果我需要访问底层数据,我应该为 Opencv 图像使用什么格式?

问题描述

我制作了一个使用 OpenCL 创建图像的程序,在 OpenCL 代码中我必须访问 opencv-image 的底层数据并直接修改它,但我不知道数据在内部是如何排列的。

我目前正在使用CV_8U,因为表示非常简单 0 黑色 255 白色以及介于两者之间的所有内容,但我想添加颜色并且我不知道要使用什么格式。

这就是我目前修改图像的方式A[y*width + x] = 255;

标签: opencvimage-processingopencl

解决方案


在 OpenCV 的情况下,像素的颜色值将排列B G R在内存中。RGB 顺序会更常见,但 OpenCV 喜欢 BGR。

您的数据应该是CV_8UC3,如果您使用imread或就是这种情况VideoCapture。如果不是这样,则需要对以下信息进行相应的解释。

您的数组索引数学需要扩展以考虑数据的布局:

[(y*width + x)*3 + channel]

3 因为 3 个频道。channel如您所料,为 0..2,x 和 y。


推荐阅读