Я имею то, что следует:
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];