0

我有以下内容:

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

其中 Scalar 定义如下:

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

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

我该如何实施?

4

2 回答 2

0

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

如何访问 OpenCV 中的像素?

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

int x=44;
int y=21;
int widthstep=480;
Scalar pixel = ((Scalar*)imgData)[y*widthstep+x];
于 2013-10-15T11:35:17.663 回答
0

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

于 2013-10-15T08:30:11.333 回答