访问char *的3元组值

时间:2013-10-01 08:52:50

标签: c++ visual-studio-2010 opencv scalar

我正在接受以下内容:

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

标量定义如下:

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

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

我该如何实现?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

也许这篇文章会有所帮助:

How do I access a pixel in OpenCV?

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

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