Я пишу код, который вращает мат OpenCV Mat под заданным углом. Используя следующий код, я успешно повернул Мат вокруг его центра, но из-за того, что изображение не квадратное, центр повернутого изображения не является центром нового изображения, а часть изображения выходит за пределы новый Мат.Как перевести вращающийся мат OpenCV
Point2f src_center(source.cols/2.0F, source.rows/2.0F);
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0);
Mat final;
final.create(calculateHeight(source.cols, source.rows, angle), calculateWidth(source.cols, source.rows, angle), CV_32FC1);
warpAffine(source, final, rot_mat, final.size());
Примечание: calculateHeight и calculateWidth методы, которые просто определяют размер нового Мат на основе размеров оригинального Мат и угол, под которым он вращается.
Пример: Original image поворачивается: rotated image
Как повернуть Мат таким образом, что полученные повернут Мат центрирован в пределах границ?
@ rold2007 Этот вопрос был задан за 2 года до вопроса, который вы связали. У вышеупомянутого вопроса есть то, что я искал в то время, но это дубликат. – KSletmoe
Да, я заметил раньше, но наоборот, поскольку ваш вопрос не имеет принятого ответа. Я не знаю, как это должно быть обработано, поэтому я думал, что модератор знает, следовательно, дубликат. – rold2007