Зависит от типа изображения / Мат.Если изображение является обычным 1 байтом для каждого rgb на пиксель, то это один из способов доступа к нему.Это довольно эффективно, но не самым безопасным способом:
// The RGB values are stored in reverse order (i don't know why)
struct RGB { unsigned char b, g, r; };
// Assumes 1 byte for r,g,b
RGB& GetRGB(cv::Mat &mat, cv::Point p)
{
assert((mat.step/mat.cols) == sizeof(RGB));
RGB *data = (RGB*)mat.data;
data += p.y * mat.cols + p.x;
return *data;
}
Если коврик другого типа, то вам просто нужно изменить структуру RGB, чтобы она соответствовала вашим потребностям.Попробуйте изменить тип изображения, которое вы читаете, на обычное изображение RGB с этим кодом:
Mat in, out;
cvtColor(in, out, CV_8UC3);