@SingularityNRN

Чем заменить метод Mat.At(int x, int y)?

Читаю книгу 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 Но не вышло.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@vanyamba-electronics
Метод at() - это в векторах метод доступа по индексу.
rot_mat[0][2] = rot_mat[0][2] + ex;
rot_mat[1][2] = rot_mat[1][2] + ey;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы