На основании чего @J. Каллеха сказала, у вас есть два варианта
Способ 1 - произвольный доступ
Если вы хотите получить произвольный доступ к элементу Mat, просто используйте
Mat.at<data_Type>(row_num, col_num) = value;
Метод 2 - Непрерывный доступ
Если вы хотите непрерывный доступ, OpenCV предоставляет итератор Mat, совместимый с STL iterator
, и его стиль C++
MatIterator_<double> it, end;
for( it = I.begin<double>(), end = I.end<double>(); it != end; ++it)
{
//do something here
}
или
for(int row = 0; row < mat.rows; ++row) {
float* p = mat.ptr(row); //pointer p points to the first place of each row
for(int col = 0; col < mat.cols; ++col) {
*p++; // operation here
}
}
Если вам трудно понять, как работает метод 2, я заимствую картинку из поста в блоге в статье Динамические двумерные массивы в C , которая гораздо более интуитивна и понятна.
См. Рисунок ниже.