Фильтр FFmpeg для поворота изображения на произвольный угол

7409
Tom

Мне нужно создать видео с замедленной съемкой с веб-камеры, которая была установлена ​​под немного вертикальным углом, и мне нужно повернуть изображение примерно на 3 градуса против часовой стрелки. (Веб-камера находится в практически недоступном месте, и из-за погоды в конечном итоге ее могут выгнать, даже если мы исправим угол. Поэтому мне нужно исправить это программно.)

Я имел успех, используя инструмент преобразования ImageMagick с параметром командной строки:

 convert infile.jpg -distort ScaleRotateTranslate 750,50,-3 outfile.jpg 

но, конечно, это мучительно медленно конвертировать. Я могу делать абсолютно все остальное, что мне нужно (обрезка и наложение логотипа на изображение) с использованием фильтров FFmpeg, но, похоже, не существует фильтра, который позволял бы поворачивать изображение на произвольный угол, только на 90 или 180 градусов. ,

Возможно, есть какой-то общий фильтр линейного преобразования, который может это сделать?

Спасибо за любую помощь.

7

1 ответ на вопрос

12
mark4o

A rotate filter was recently added to FFmpeg, which allows rotation by an arbitrary angle. To use it, you can build the lastest version from git or download a recent snapshot build.

The angle is specified in radians; positive is clockwise and negative is counterclockwise. If you have degrees, multiply by PI/180 to convert to radians. For example, to rotate 3° counterclockwise:

ffmpeg -i in.mp4 -vf "rotate=-3*PI/180" out.mp4 

Check out the documentation for more details and additional examples.

Это выглядит многообещающе. Определенно ответ, который я искал. Я бы хотел, чтобы был способ указать центр вращения. Я найду обходной путь, выполнив некоторое поступательное смещение изображения до и после поворота, чтобы добиться того же эффекта. Я постараюсь не забыть опубликовать продолжение того, что я нахожу. Tom 10 лет назад 1
Ирония в том, что используемую мной версию ffmpeg я собрал из исходников 11 июня, в тот же день, когда была добавлена ​​новая функция поворота. Если бы я просто подождал несколько часов, у меня уже было бы это! Tom 10 лет назад 1
Забавно, что по умолчанию это не просто градусы. Я только что попробовал "rotate = -4" и получил серьезный дурацкий результат! FinancialRadDeveloper 7 лет назад 0
@FinancialRadDeveloper: см. Http://math.stackexchange.com/q/1952206 и связанные / связанные вопросы mark4o 7 лет назад 0