我有以下内容:
char* imgData;
Scalar scal = cvGet2D(imgData, x, y);
其中 Scalar 定义如下:
typedef struct Scalar
{
double val[3];
}
Scalar;
结果我想要一个标量,但不使用 cvGet2D。
我该如何实施?
我有以下内容:
char* imgData;
Scalar scal = cvGet2D(imgData, x, y);
其中 Scalar 定义如下:
typedef struct Scalar
{
double val[3];
}
Scalar;
结果我想要一个标量,但不使用 cvGet2D。
我该如何实施?
也许这篇文章会进一步帮助:
在您的情况下,img-> imageData 只是 imgData。要访问 x 和 y 中的所有像素,您仍然需要知道图像的宽度步长(行步长)。我会说你有类似的东西:
int x=44;
int y=21;
int widthstep=480;
Scalar pixel = ((Scalar*)imgData)[y*widthstep+x];
cvGet2D()
必须考虑所有可能的图像深度、通道数等。
如果您在编译时知道图像格式,则可以通过指针算法直接访问像素。