访问字符* 的 3 元组值

Accessing 3-tuple values of a char*

本文关键字:元组 字符 访问      更新时间:2023-10-16

我有以下内容:

char* imgData;
Scalar scal = cvGet2D(imgData, x, y);

其中标量定义如下:

typedef struct Scalar
{
double val[3];
}
Scalar;

结果,我想要一个标量,但不要使用 cvGet2D。

我该如何实现?

cvGet2D()必须考虑所有可能的图像深度、通道数等。
如果您在编译时知道图像格式,则可以通过指针算法直接访问像素。

也许这篇文章会进一步帮助:

如何在OpenCV中访问像素?

在你的例子中,img->imageData只是imgData。要访问 x 和 y 中的所有像素,您仍然需要知道图像的宽度步长(行步长)。我会说你有这样的东西:

int x=44;
int y=21;
int widthstep=480;
Scalar pixel = ((Scalar*)imgData)[y*widthstep+x];