Читаю книгу Mastering OpenCV. Пытаюсь реализовать идентификацию лиц. Сейчас нахожусь на этапе предобработки изображения лица(поворот и скейлинг). Переписываю пример из книги на C# (В оригинале C++). Столкнулся с таким кодом:
// Get the transformation matrix for the desired angle & size.
Mat rot_mat = getRotationMatrix2D(eyesCenter, angle, scale);
// Shift the center of the eyes to be the desired center.
double ex = DESIRED_FACE_WIDTH * 0.5f - eyesCenter.x;
double ey = DESIRED_FACE_HEIGHT * DESIRED_LEFT_EYE_Y –
eyesCenter.y;
rot_mat.at<double>(0, 2) += ex;
rot_mat.at<double>(1, 2) += ey;
// Transform the face image to the desired angle & size &
// position! Also clear the transformed image background to a
// default grey.
Mat warped = Mat(DESIRED_FACE_HEIGHT, DESIRED_FACE_WIDTH,
CV_8U, Scalar(128));
warpAffine(gray, warped, rot_mat, warped.size());
Не могу разобраться что делают строки
rot_mat.at<double>(0, 2) += ex;
rot_mat.at<double>(1, 2) += ey;
и чем их вообще можно заменить. Пытался обратиться к элементам массива Mat Но не вышло.