2012-02-19 3 views
1

Я пишу код, который вращает мат 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

Как повернуть Мат таким образом, что полученные повернут Мат центрирован в пределах границ?

+0

@ rold2007 Этот вопрос был задан за 2 года до вопроса, который вы связали. У вышеупомянутого вопроса есть то, что я искал в то время, но это дубликат. – KSletmoe

+0

Да, я заметил раньше, но наоборот, поскольку ваш вопрос не имеет принятого ответа. Я не знаю, как это должно быть обработано, поэтому я думал, что модератор знает, следовательно, дубликат. – rold2007

ответ

0

Просто скопируйте изображение, которое хотите повернуть в центр достаточно большого изображения и поверните новое изображение.

+0

Как получить скопированное изображение в центре нового изображения? – KSletmoe

Смежные вопросы