Для поворота растрового изображения на произвольный угол разработаны быстрые но не оптимальные алгоритмы, дающие приемлемую для практических целей аппроксимацию с потерей качества (например, этот).
Довольно давно, из чисто спортивного интереса, меня заинтересовала задача максимально точного поворота растрового изображения на произвольный угол. К сожалению, мне нигде не удалось найти готовый алгоритм, поэтому пришлось делать его собственноручно. Даже если в итоге я «изобрёл велосипед», результат, как мне кажется, получился достаточно интересным, чтобы им можно было поделиться.
Ниже мы рассмотрим алгоритм прецизионного поворота растрового изображения на произвольный угол относительно произвольного центра с минимальными потерями.
Выражаю благодарность Харченко Владиславу Владимировичу за оказанную помощь.
Алгоритм
Из вышеприведённого рисунка видно, что после поворота растрового изображения, цвет каждого пикселя итогового изображения определяется сложением цветов нескольких «осколков» нескольких пикселей исходного изображения, пропорционально площадям соответствующих «осколков». Поэтому в общем виде решение нашей задачи будет состоять в том, чтобы найти площади всех «осколков» для каждого пикселя исходного изображения и собрать цвет каждого пикселя итогового изображения из цветов соответствующих «осколков».
В качестве модели пикселя исходного изображения мы будем использовать квадрат со стороной = 1, с такими обозначениями углов:
i2 — самый нижний угол;
i3 — самый левый угол;
i4 — самый верхний угол.
Моделью итогового изображения будет сетка из параллельных горизонтальных и вертикальных линий с расстоянием между линиями = 1.
Координаты центра поворота растрового изображения, в таком представлении, могут быть выражены парой произвольных вещественных чисел. То есть центр поворота в нашей задаче может лежать не в геометрическом центре пикселя и не в точке пересечения линий сетки, а в произвольной точке декартовых координат.
Поскольку при повороте растрового изображения квадрат каждого пикселя поворачивается на один и тот же угол (относительно центра этого пикселя) мы будем решать задачу для одного пикселя, а потом применим полученное решение для каждого пикселя исходного изображения.
Поворот растрового изображения можно разделить на две части:
1. Поворот квадрата каждого пикселя исходного изображения относительно центра этого квадрата на заданный угол.
2. Смещение центра квадрата пикселя в соответствии с углом поворота изображения относительно центра поворота изображения таким образом, чтобы квадрат занял своё итоговое положение на сетке итогового изображения.
При этом сетка итогового изображения рассекает квадрат каждого пикселя исходного изображения на «осколки» в количестве 4, 5 или 6 штук.
Чтобы систематизировать разнообразие получающихся вариантов мне пришлось составить таксономию всевозможных пересечений квадрата пикселя исходного изображения с сеткой итогового изображения. Существенно разных вариантов оказалось всего 23:
Условные обозначения здесь следующие:
— цифры в ячейках обозначают номера углов квадрата пикселя, которые попали в данную ячейку сетки итогового изображения после поворота изображения;
— зелёным цветом обозначены ячейки, в которые попали участки пикселя и гарантированно оставили там по «осколку»;
— жёлтым цветом обозначены ячейки, в которые, в зависимости от условий,
Для наглядности приведу одну из возможных вариаций варианта №3:
Как видим, верхняя правая ячейка не содержит в себе «осколка» пикселя, хотя при других условиях поворота могла бы содержать.
Чтобы не нагружать читателя детальными геометрическими выкладками, скажу сразу, что во всех этих 23-х вариантах пиксель исходного изображения рассекается на «осколки», площадь которых легко вычисляется комбинированием 4-х формул. Ниже приведены эти формулы с иллюстрациями. Красным цветом обозначены линии сетки итогового изображения, которые рассекают квадрат пикселя. Жёлтым цветом закрашена область, площадь которой вычисляется формулой.
Формула 1
Эта формула не используется для расчёта окончательной площади «осколка», но её удобно использовать для быстрого расчёта вспомогательных промежуточных площадей, поскольку нам заведомо известно, что площадь всего пикселя = 1.
В качестве входных переменных во всех формулах используются высоты, опущенные из углов квадрата на сетку итогового изображения, по той простой причине, что расчёт этих высот сводится к мгновенному выделению дробной части числового значения координаты соответствующего угла квадрата пикселя.
Формула 2
Данная формула используется только в вариантах 1 и 2.
Формула 3
Часто используемая формула — очень хорошо, что она быстро вычисляется. Поскольку угол поворота одинаков для каждого пикселя — все тригонометрические функции можно посчитать один раз, перед обработкой всех пикселей, и далее использовать эти значения в цикле как константы.
Формула 4
С учётом всего вышесказанного, в общем виде алгоритм будет выглядеть так:
1. Загружаем в память ЭВМ исходное изображение.
2. Рассчитываем размеры итогового изображения в пикселях.
4. Последовательно перебираем все пиксели исходного изображения; поворачиваем каждый из них на заданный угол и располагаем на сетке итогового изображения, рассчитав 4 координаты углов квадрата пикселя; классифицируем пиксель по 23 вариантам и считаем площади «осколков»; добавляем в соответствующие элементы промежуточного массива цвета полученных «осколков» пропорционально площади этих «осколков».
5. После обработки всех пикселей исходного изображения округляем значения RGB в промежуточном массиве до целого значения для каждого элемента и создаём на базе этих целых значений итоговое изображение в формате BMP.
Программа
На основании приведённого алгоритма была написана программа для Windows. Исходные коды на Object Pascal и скомпилированный исполняемый файл можно скачать здесь.
Интерфейс программы.
По нажатию на кнопку «Open…» открывается диалог выбора BMP-файла. Поддерживаются битмапы только с 24-битной палитрой. Открытое изображение отображается в окне. В заголовке окна выводится полный путь к файлу и размеры изображения.
В поле «Angle» задаётся угол поворота в градусах – любое положительное число.
Радиокнопками «CW» и «CCW» задаётся направление вращения: «по часовой стрелке» и «против часовой стрелки», соответственно.
В блоке «Background color» можно задать цвет фона, с которым будут смешиваться граничные пиксели изображения. По умолчанию цвет фона – чёрный.
В полях «Centre X» и «Centre Y» задаются координаты центра поворота. При этом следует учитывать, что начало координат находится в левом верхнем углу изображения и Y увеличивается вниз. По умолчанию центр поворота устанавливается в геометрическом центре загруженного изображения.
По нажатию на кнопку «Rotate» либо по нажатию на клавишу Enter изображение поворачивается на заданный угол относительно заданного центра поворота и отображается в окне. Поворот изображения на углы, кратные 90°, реализован по упрощённой схеме, путём простого преобразования координат пикселей исходного изображения, при этом значения «Centre X» и «Centre Y» игнорируются.
Через кнопку «Save…» повёрнутое изображение можно сохранить в BMP-файл.
Если итоговое изображение не помещается в окне – оно подгоняется к границам окна API-функцией StretchBlt – поэтому оценить реальное качество больших картинок можно только по сохранённому BMP-файлу.
Для поворота изображения на другой угол его не нужно загружать повторно — поворачивается изображение из выбранного файла, а не отображённое в данный момент в окне.
Изображение с размерами 1024 х 768 на машине с четырёхядерным процессором 2,67 ГГц поворачивается данной программой на произвольный угол, в среднем, приблизительно, за 0,5 секунды. Изображение с размерами 4000 х 4000 — примерно за 10 секунд. Время работы алгоритма для разных углов может отличаться в связи с тем, что изображение при разных углах дробится на разное количество «осколков», на вычисление площадей которых суммарно тратится, соответственно, разное время.
Промежуточный массив, содержащий информацию о цвете пикселей итогового изображения в формате числа с плавающей запятой, реализован на типе extended (10 байт), поэтому обработка больших изображений (примерно более 5000 х 5000 пикселей) может вызвать ошибку переполнения памяти. Улучшить ситуацию возможно, применив менее точный тип данных и сохраняя целую часть числа сразу в итоговый битмап, оставляя во вспомогательном массиве только дробную часть.
Результаты
Проведём сравнительный анализ работы прецизионного алгоритма и алгоритма поворота изображений, реализованного в программе Photoshop.
Тест 1
Для первого теста я взял очень простое изображение — горизонтальную линию чёрного цвета толщиной 1 пиксель и длиной 10 пикселей, смещённую относительно центра белого квадрата с размерами 100 х 100 пикселей:
После чего я повернул данное изображение относительно точки с координатами (0, 0) на 3° по часовой стрелке. Точка (0, 0) выбрана потому, что, судя по моим экспериментам, Photoshop поворачивает изображение относительно именно этой точки. Вот сравнительный результат (увеличено в 24 раза):
Прецизионный алгоритм
Photoshop 7.0.1
Photoshop CS6 (64 Bit)
Алгоритм Photoshop даёт более контрастную картинку, прецизионный алгоритм несколько «размывает» изображение. Но в целом, при визуальной оценке, результат получается почти одинаковым. Попутно отметим, что алгоритм поворота, реализованный в Photoshop, не претерпел за 10 лет существенных изменений.
Тест 2
Для второго теста я выбрал тюльпан из стандартного дистрибутива Win7:
После поворота данного изображения на 5° по часовой стрелке относительно геометрического центра я суммировал цвет всех пикселей в разрезе каналов RGB. Вот результат для прецизионного алгоритма и алгоритма Photoshop:
Оригинал |
Прецизионный поворот |
Прецизионный поворот |
Photoshop CS6 |
R = 33381406 G = 27933900 B = 11239213 |
R = 33381406,0000004 (~0) G = 27933899,9999997 (~0) B = 11239212,9999999 (~0) |
R = 33382786 (1380) G = 27933920 (20) B = 11238086 (-1127) |
R = 33387726 (6320) G = 27950823 (16923) B = 11245937 (6724) |
Цвет изображения после прецизионного поворота и до округления практически не поменялся — чего и следовало ожидать.
Самое большое отклонение, в данном конкретном случае, мы обнаруживаем по каналу G для алгоритма Photoshop. В процентном отношении это отклонение составляет всего 0,06%, поэтому «на глаз» оно не заметно, но из соображений перфекционизма результат у Photoshop получается хуже, чем у прецизионного алгоритма.
Важно отметить, что округление цвета каждого пикселя в прецизионном алгоритме до целочисленного значения, необходимого для формата BMP, необратимо уничтожает часть информации о цвете.
Для визуального сравнения двух алгоритмов приведу увеличенный фрагмент изображения,
повёрнутого на 5° по часовой стрелке, соответственно, Photoshop’ом:
и прецизионным алгоритмом:
Сравнительный анализ показывает, что Photoshop лучше сохраняет контрастные элементы изображения, но при этом создаёт «ореолы» искажённого цвета. Прецизионный алгоритм не искажает цвет но при этом несколько «размывает» изображение.
Выводы
1. Прецизионный и при этом сравнительно быстрый поворот растрового изображения на произвольный угол — возможен. Для меня остаётся загадкой вопрос, почему в профессиональных графических редакторах нет опции, позволяющей пользователю повернуть изображение предельно точно за чуть большее время.
2. Несмотря на предельную точность рассмотренного алгоритма, обратное преобразование изображения, т.е. поворот на противоположный угол без потери качества — невозможен, потому что округление точного значения цвета (в формате числа с плавающей запятой) необратимо уничтожает часть информации о цвете.
3. С точки зрения визуального восприятия контрастных деталей лучший результат даёт подоптимальный алгоритм Photoshop. Прецизионный же алгоритм имеет смысл применять в тех случаях, когда важно сохранить максимум информации о цвете изображения.
UPD: Для практического использования написал программу, реализующую упрощённый алгоритм, в котором для каждого пикселя итогового изображения все необходимые кусочки пикселей исходного изображения рассчитываются последовательно и округление цвета происходит немедленно. Только после этого рассчитывается следующий пиксель итогового изображения. При этом к отдельному пикселю исходного изображения программа обращается несколько раз. Время расчётов, таким образом, увеличилось, в среднем, в 1,7 раз, но память в этой версии алгоритма расходуется только на хранение битмапов, что позволяет работать с изображениями больших размеров. Скачать программу и исходники можно здесь.
Каждый из нас хотя бы раз в жизни снимал видео, по ошибке перевернув камеру. Такое происходит и с владельцами смартфонов, и с теми, кто снимает на фотоаппарат. И если это случилось с вами, то знайте, что ситуация поправима. Вам всего лишь нужно перевернуть снятое видео и сохранить его на компьютере, используя видеоредактор.
В инструкции ниже мы расскажем, как быстро повернуть видео на 90 градусов или на любой другой угол – в зависимости от того, как вы держали камеру во время съёмки. Мы также покажем, как применить эффект вращения, если вы хотите, чтобы видео плавно поворачивалось по часовой или против часовой стрелки во время проигрывания.
Чтобы повторить всё описанное в инструкции, вам необходимо скачать и установить видеоредактор VSDC на свой компьютер. Это абсолютно бесплатная программа для Windows ПК, и если вы нередко нуждаетесь в инструменте для корректировки отснятых материалов, VSDC пригодится вам ещё не раз.
Cкачать видеоредактор VSDC
Как повернуть видео на 90 градусов и сохранить его на компьютере
Итак, в VSDC доступны 2 опции: стандартный поворот видео на 90 градусов по часовой и против часовой стрелки, а также «эффект вращения». Начнём с первого.
Запустите программу и импортируйте нужный видеофайл. В верхнем меню «Удаление и разбивка» вы увидите две кнопки для поворота видео на 90 градусов. Щелкните по той, что соответствует необходимому направлению, и вы моментально увидите желаемый результат.
Как повернуть видео на заданный угол
Иногда вам может понадобиться повернуть снятое видео на угол, отличный от 90 и 180 градусов. Это может быть вызвано как небольшим наклоном камеры во время съёмки, так и желанием создать эффект видео, снятого под наклоном. Вот как сделать это в VSDC:
- Добавьте видео на сцену привычным способом.
- Перейдите во вкладку Видеоэффекты —> Трансформация —> Вращение.
- Как только вы выберете этот эффект, на экране появится всплывающее окно с параметрами позиции объекта. Нажмите ОК.
- На временной шкале вы заметите новую вкладку, на которой будет размещён слой под названием «Вращение 1».
- Правой кнопкой мышки щёлкните по нему и выберите Свойства.
- В Окне свойств, прокрутите бегунок вниз до поля «Угол поворота» и задайте желаемые параметры, как это показано на иллюстрации ниже.
Как повернуть кадр в видео в определённый момент времени во время проигрывания
Если ваша задача – повернуть видео на любой угол во время проигрывания в заданный момент, вам также стоит использовать описанный выше эффект вращения:
- Разместите курсор на временной шкале непосредственно в тот момент, в который вы планируете применить эффект вращения.
- Перейдите во вкладку Видеоэффекты —> Трансформация —> Вращение.
- В этот раз, однако, когда на экране появится всплывающее окно с параметрами позиции объекта, выберите «От позиции курсора».
- Затем откройте Окно свойств и настройте угол поворота.
Теперь видео автоматически повернётся во время проигрывания в указанный вами момент. Чтобы убедиться в том, что всё выглядит так, как вы задумывали, используйте красную кнопку предпросмотра, расположенную над шкалой времени.
Как применить усложнённый эффект вращения к видео
Последний эффект, который мы рассмотрим в данной инструкции, это эффект продолжительного вращения видео или изображения в кадре. Его суть заключается в том, что вместо поворота в одно действие, объект в кадре может плавно поворачиваться в выбранную сторону на заданный угол в режиме реального времени во время проигрывания.
Для того, чтобы начать, снова примените видеоэффект Трансформация —> Вращение и откройте Окно свойств. В Окне свойств щёлкните на иконку “…”, расположенную напротив параметра «Угол поворота». На шкале времени откроется новая вкладка – в ней вы будете строить траекторию вращения объекта, а также сможете задать темп и направление.
В первую очередь вам необходимо выбрать тип траектории. Чтобы сделать это, нажмите на иконку в виде горизонтальной черты. Она расположена между полем “Угол поворота” и кнопкой “…”. После нажатия на шкале времени вы заметите ровную линию – это текущая траектория вращения. Чтобы изменить её, вам необходимо добавить направляющие точки – это делается двойным щелчком мыши по пространству над или под траекторией. Размещая новую точку над траекторией, вы задаёте направление вращения по часовой стрелке, а под траекторией – против. Выбрав любую из уже добавленных точек, вы также можете перетаскивать их в нужные позиции, а чтобы удалить одну из них – используйте иконку «Удалить выбранное значение параметра» в меню инструментов над шкалой времени.
Как обычно, проверять результат удобнее всего с помощью функции предпросмотра.
Теперь вы знаете, как повернуть видео на 90 градусов, перевернуть снятое видео на 180 градусов, а также на любой другой угол единым действием или постепенно.
Мы подобрали ещё три инструкции по работе с VSDC, которые могут вас заинтересовать:
Subscribe to our YouTube channel and message us on Facebook if you have any questions!
ориентация в EXIF / Хабр
Я много писал о проектах компьютерного зрения и машинного обучения, таких как системы распознавания объектов и проекты распознавания лиц. У меня также есть опенсорсная библиотека распознавания лиц на Python, которая как-то вошла в топ-10 самых популярных библиотек машинного обучения на Github. Всё это привело к тому, что новички в Python и машинном зрении задают мне много вопросов.По опыту, есть одна конкретная техническая проблема, которая чаще всего ставит людей в тупик. Нет, это не сложный теоретический вопрос или проблема с дорогими GPU. Дело в том, что почти все загружают в память изображения повёрнутыми, даже не подозревая об этом. А компьютеры не очень хорошо обнаруживают объекты или распознают лица в повёрнутых изображениях.
Когда вы делаете снимок, камера регистрирует положение телефона, так что в другой программе картинка отобразится в правильной ориентации:
Но камера фактически не поворачивает пиксельные данные внутри файла. Поскольку датчики изображения в цифровых камерах считываются построчно как непрерывный поток информации о пикселях, камере проще всегда сохранять данные о пикселях в одинаковом порядке, независимо от реального положения телефона.
Это уже забота программы для просмотра — правильно повернуть картинку, прежде чем отобразить её на экране. Наряду с данными самого изображения, камера также сохраняет метаданные — настройки объектива, данные о местоположении и, конечно, угол поворота камеры. Программа просмотра должна использовать эту информацию для правильного отображения.
Наиболее распространённый формат метаданных изображений называется EXIF (сокращение от Exchangeable Image File Format). Метаданные в формате EXIF внедряются в каждый файл jpeg. Вы не можете их видеть на экране, но они читаются любой программой, которая знает, где искать.
Вот метаданные EXIF внутри JPEG-изображения нашего гуся из инструмента exiftool:
Видите элемент ‘Orientation’? Он говорит программе просмотра, что перед отображением на экране картинку следует повернуть на 90 градусов по часовой стрелке. Если программа забудет это сделать, изображение будет на боку!
Метаданные EXIF изначально не были частью формата JPEG. Их внедрили гораздо позже, позаимствовав идею из формата TIFF. Для обратной совместимости эти метаданные не обязательны, а некоторые программы не утруждают себя их разбором.
Большинство библиотек Python для работы с изображениями, такие как numpy, scipy, TensorFlow, Keras и т. д., считают себя научными инструментами для серьёзных людей, работающих с общими массивами данных. Они не заботятся о проблемах потребительского уровня, таких как автоматический поворот изображений, хотя это требуется практически для всех фотографий в мире, снятых с помощью современных камер.
Это означает, что при обработке изображения практически любой питоновской библиотекой вы получаете исходные данные изображения без поворота. И угадайте, что происходит, когда вы пытаетесь загрузить в модель обнаружения лиц или объектов фотографию на боку или вверх ногами? Детектор не срабатывает, потому что вы дали ему плохие данные.
Вы можете подумать, что проблемы возникают только в программах новичков и студентов, но это не так! Даже демо-версия флагманского Vision API от Google не обрабатывает правильно ориентацию EXIF:
Демонстрация Google Vision API не умеет поворачивать портретно-ориентированное изображение, снятое со стандартного мобильного телефона
И хотя Google Vision распознаёт каких-то животных на боку, но помечает их общей меткой «животное», потому что модели машинного зрения гораздо сложнее распознать гуся на боку, чем вертикального гуся. Вот результат, если правильно повернуть изображение перед подачей в модель:
При корректной ориентации Google обнаруживает птиц с более конкретной меткой «гусь» и более высоким показателем уверенности. Гораздо лучше!
Это суперочевидная проблема, когда вы явно видите, что изображение на боку, как в этой демонстрации. Но именно здесь все становится коварным — обычно вы этого не видите! Все нормальные программы на вашем компьютере отобразят изображение в правильной ориентации, а не как оно на самом деле хранится на диске. Поэтому, когда вы пытаетесь просмотреть изображение, чтобы увидеть, почему ваша модель не работает, оно будет отображаться правильно, и вы не поймёте, почему же модель не работает!
Finder на Mac всегда отображает фотографии с корректным поворотом из EXIF. Там никак не увидеть, чтобы изображение на самом деле хранится на боку
Это неизбежно приводит к массе открытых тикетов на Github: люди жалуются, что проекты с открытым исходным кодом сломаны, а модели не очень точны. Но проблема гораздо проще — они просто подают на вход повёрнутые или перевёрнутые фотографии!
Решение заключается в том, что при каждой загрузке изображений в программы Python следует проверить метаданные ориентации EXIF и повернуть изображения, если это необходимо. Это довольно просто сделать, но в интернете удивительно трудно найти примеры кода, который правильно делает это для всех ориентаций.
Вот код для загрузки любого изображения в массив numpy с правильной ориентацией:
import PIL.Image
import PIL.ImageOps
import numpy as np
def exif_transpose(img):
if not img:
return img
exif_orientation_tag = 274
# Check for EXIF data (only present on some files)
if hasattr(img, "_getexif") and isinstance(img._getexif(), dict) and exif_orientation_tag in img._getexif():
exif_data = img._getexif()
orientation = exif_data[exif_orientation_tag]
# Handle EXIF Orientation
if orientation == 1:
# Normal image - nothing to do!
pass
elif orientation == 2:
# Mirrored left to right
img = img.transpose(PIL.Image.FLIP_LEFT_RIGHT)
elif orientation == 3:
# Rotated 180 degrees
img = img.rotate(180)
elif orientation == 4:
# Mirrored top to bottom
img = img.rotate(180).transpose(PIL.Image.FLIP_LEFT_RIGHT)
elif orientation == 5:
# Mirrored along top-left diagonal
img = img.rotate(-90, expand=True).transpose(PIL.Image.FLIP_LEFT_RIGHT)
elif orientation == 6:
# Rotated 90 degrees
img = img.rotate(-90, expand=True)
elif orientation == 7:
# Mirrored along top-right diagonal
img = img.rotate(90, expand=True).transpose(PIL.Image.FLIP_LEFT_RIGHT)
elif orientation == 8:
# Rotated 270 degrees
img = img.rotate(90, expand=True)
return img
def load_image_file(file, mode='RGB'):
# Load the image with PIL
img = PIL.Image.open(file)
if hasattr(PIL.ImageOps, 'exif_transpose'):
# Very recent versions of PIL can do exit transpose internally
img = PIL.ImageOps.exif_transpose(img)
else:
# Otherwise, do the exif transpose ourselves
img = exif_transpose(img)
img = img.convert(mode)
return np.array(img)
Отсюда вы можете передать массив данных изображения в любую стандартную библиотеку машинного зрения Python, которая ожидает массив на входе: например, Keras или TensorFlow.
Поскольку проблема повсеместная, я опубликовал эту функцию в качестве pip-библиотеки под названием image_to_numpy. Можете установить её следующим образом:
pip3 install image_to_numpy
Она работает с любой программой Python, исправляя загрузку изображения, например:
import matplotlib.pyplot as plt
import image_to_numpy
# Load your image file
img = image_to_numpy.load_image_file("my_file.jpg")
# Show it on the screen (or whatever you want to do)
plt.imshow(img)
plt.show()
См. файл readme для более подробной информации.
Наслаждайтесь!
Программа для поворота видео на 90, 180 и 270 градусов
Автор статьи: Алина Лихачёва 29 января 2019Мы всё реже пользуемся видеокамерой, для того чтобы снять какое-то событие. Обычно под рукой оказывается смартфон или фотоаппарат. Но ролик, отснятый таким образом, зачастую отображается неправильно – видео получается перевернутым.
В этой статье расскажем об уникальном современном софте, который сделает любое изображение корректным. Это удобная программа для поворота видео «ВидеоМАСТЕР». Вы узнаете о том, как перевернуть любое видео на 90, 180 и 270 градусов, сможете улучшить качество изображения и даже оформить его зрелищными спецэффектами.
Шаг 1. Установка программы и добавление видео-файлов
Зайдите на сайт компании-производителя: https://video-converter.ru/ и скачайте программный дистрибутив. После загрузки архива установите софт на свой компьютер, используя «Мастер установки». Добавьте на монтажный стол необходимые файлы, которые можно выбрать с ПК или скачать из интернета.
Видео доступно для предпросмотра на экране справаШаг 2. Поворот видео
В левом углу экрана находится панель инструментов. Выберите вкладку «Эффекты» и перед вами откроется встроенный редактор видеозаписей. Нажмите кнопку «Поворот видео». Вы можете задать сторону (вправо или влево) и угол поворота (от 90 до 270 градусов). Установив нужные настройки, нажмите «Применить».
Видео можно поворачивать прямо во время воспроизведенияШаг 3. Улучшение качества видеоролика
Программа для поворота видео имеет множество функций. Улучшите качество изображения автоматически при помощи функции «Комплексное улучшение». Также можно установить необходимые параметры яркости, контраста, насыщенности и цветовой тон, вручную, передвигая маркер по шкале настройки.
Шаг 4. Оформление клипа спецэффектами
Украсьте видео зрелищными спецэффектами. Каталог программы насчитывает более 10 различных вариантов. Сделайте ролик ярким и сочным, используя эффект насыщенности, или, напротив, создайте кино в стиле «нуар» с эффектами затемнения и оттенками серого. Используйте спецэффекты как отдельно друг от друга, так и комплексно, подбирая наиболее удачные сочетания.
Эффект «Старое кино» накладывает на ролик оттенок сепииШаг 5. И еще несколько трюков
Функционал программы имеет различные возможности для редактирования и обработки клипа. Вы можете обрезать видео и разделить его на части, соединить несколько файлов (включая аудио) в один, кадрировать изображение, добавлять любой текст и графику. Единственное ограничение – ваша фантазия.
Помимо стандартных пропорций 4:3 и 16:9, вы также можете задать произвольныеШаг 6. Экспорт готового видео
Программа для переворота видео предлагает несколько вариантов экспорта файла:
- конвертация готового видео в различные расширения;
- подготовка ролика для публикации в сети Интернет;
- запись видео-файла на DVD-диск.
Данный софт позволит навсегда забыть о проблемах, связанных с неправильно отснятым видео. Теперь вам не придется думать, в каком положении держать телефон или фотоаппарат для грамотной съемки. Благодаря программе «ВидеоМАСТЕР», вы знаете, как повернуть видео на 90 градусов и более, умеете за считанные минуты улучшать качество ролика и украшать его различными надписями и спецэффектами.
Скачать сейчасВсего 56 mbУниверсальный видео конвертер
Всё ещё не знаете, какой программой перевернуть видео, а затем преобразовать его в MPEG, AVI или какой-нибудь другой формат? На помощь вновь придет «ВидеоМАСТЕР». Ведь это еще и компактный конвертер видео и аудио файлов, позволяющий с легкостью переводить их из одного формата в другой.
В программе доступны практически все известные форматыВ базе программы хранится внушительный арсенал кодеков и контейнеров для конвертации, начиная от самых востребованных и заканчивая самыми редкими. К примеру, вам требуется сменить расширение скачанного аудио. В этом случае приложение позволит всего за один клик сделать из WAV MP3 и наоборот.
Для видеороликов выбор возможностей ещё больше. Их можно конвертировать не только в стандартные и нестандартные форматы типа AVI или SWF, но и адаптировать для любой модели смартфона/планшета/консоли/плеера. Также конвертер оснащен функцией мгновенной публикации ролика на YouTube, MySpace, Вконтакте или другом известном сайте. А если вам необходимо избавиться от видеоряда и оставить только звук – достаточно просто выбрать в списке интересующее аудиорасширение.
Теперь вы всегда будете знать не только о том, какой программой можно переворачивать видео, но и как в кратчайшие сроки конвертировать ролики из одного формат в другой.
Я долго с этим мирился, пока не вспомнил про вертикальные мониторы. А почему нет? Чем я хуже? Вот тогда я и решил немного переоборудовать свое рабочее место. Можно было бы сделать крепеж и навсегда перевести монитор в вертикальное положение, но меня это не устраивало по той причине, что на моем «мониторе» я часто смотрю фильмы. А вертикальные фильмы, слава богу, пока еще не снимают. В этот момент появилась идея приобрести поворотный кронштейн и повесить телевизор на стену, чтобы при необходимости его вертеть. Именно так я и поступил.
Так лучше, не правда ли?
Жить стало намного удобнее. Надо поработать? Встал со стула, повернул монитор, сел обратно, ввел в терминале команду
xrandr -o left
и работай себе с комфортом. Хочешь посмотреть фильмец? Сделай тоже самое, только введи уже xrandr -o normal
и расслабляйся.
Все это меня полностью устраивало, пока мне просто не надоело. Надоело вводить эти команды. Вставать и переворачивать эту махину, мне, правда, тоже надоело, но не моторчик же приделывать к ней, верно? А вот ввод команд я мог автоматизировать без особых затрат. Но как объяснить компьютеру, что монитор был перевернут? Можно было бы заморочиться как, например, вот этот парень, но это никому не нужные сложности. В качестве интрфейса взаимодействия я сразу решил использовать последовательный порт (если нет встроенного, можно прикупить адаптер usb-to-serial). Но как быть с датчиком? А тут дело обстоит еще проще. Я отыскал никому не нужный тюбик от губной помады, вытащил металлический шарик из подшипника и соорудил это:
Тюбик, с одной стороны которого размещены 2 контакта, подключенные к пинам TxD и RxD последовательного порта.
Внутри тюбика катается металический шарик. Если он скатывается к контактам, то замыкает их, тем самым соединяя пины передачи и приема последовательного порта. Тюбик вешается позади «монитора» под углом в 45 градусов таким образом, что при горизонтальном положении шарик находится в бесконтактном конце тюбика, а при переводе монитора в вертикальный режим, шарик скатывается и замыкает собой контакты.
Осталось написать программную часть. Принцип работы очень прост: в серийный порт пишется слово и сразу же читается. Если программа хоть что-нибудь прочитала, то контакты замкнуты, а значит монитор находится в вертикальном положении. В результате чего выполняется команда xrandr -o left
. При повороте обратно в горизонтальное положение происходит аналогичное действие, но с командой xrandr -o normal
.
Первый раз я написал скрипт на моем любимом питоне. Это был двухпоточный монстр, который жрал, если верить top
, 120% CPU. Почему так происходило, для меня до сих пор остается загадкой. В конце концов я решил переписать программу на С, что помогло не загружать так сильно процессор.
Вот, в принципе, и все. Осталось лишь добавить программу в автозагрузку.
Решил поделиться этим небольшим лайфхаком с хабросообществом. Вдруг кому пригодится.
Код можно найти на гитхабе.
Информацию про грамматические и пунктационные ошибки отправляйте, пожалуйста, в личные сообщения, дабы не засорять комментарии.
UPD:
А вот как это выглядит в жизни (прошу прощения за качество):
Как повернуть видео на 90 градусов или на любой другой угол
Никому не нравится смотреть «повернутое набок» видео. Однако то, что камеру во время съемки держали неправильно, часто обнаруживается уже постфактум. Что делать в таком случае? Не стоит спешить удалять полученное видео, ведь все можно легко исправить, если у вас под рукой есть нужная программа.
Movavi Video Editor – это не просто программа для поворота видео, это полнофункциональный видеоредактор, при помощи которого можно сделать свой фильм. Благодаря интуитивно понятному интерфейсу на русском языке разобраться в программе не составит труда даже для новичка.
Чтобы узнать, как развернуть видео, скачайте программу и следуйте инструкции ниже.
Скачать бесплатно Скачать бесплатноУстановите Видеоредактор Movavi
Скачайте и запустите установочный файл программы Movavi Video Editor. Процесс установки займет всего пару минут.
Добавьте видео в программу
Откройте программу и выберите Создать проект в расширенном режиме. Затем нажмите кнопку Добавить файлы, выберите нужный видеоклип и нажмите кнопку Открыть. Видео будет автоматически добавлено на Шкалу времени, расположенную в нижней части окна программы.
Вырежьте фрагмент видео, который хотите повернуть (по желанию)
Если вам необходимо повернуть только фрагмент ролика, вам нужно предварительно вырезать его. Установите маркер в начало фрагмента, с которым вы хотите работать, кликните правой кнопкой мыши по видео на Шкале времени и щелкните по кнопке Разрезать. Теперь установите маркер в конец фрагмента и повторите ваши действия. Ваш фрагмент отделен с обеих сторон, и вы можете повернуть его необходимым образом.
Поверните видео
Есть два способа повернуть ваше видео. Чтобы повернуть клип на 90, 180 или 360 градусов по часовой стрелке, выберите его на Шкале времени и нажмите кнопку Поворот столько раз, сколько потребуется.
Если вы хотите задать произвольный угол поворота для вашего клипа, нажмите кнопку Поворот и кадрирование и перемещайте бегунок Угол, пока не достигните желаемого результата. Вы также можете вручную вписать конкретное значение угла поворота в соответствующее поле справа от бегунка.
Сохраните готовое видео
Нажмите кнопку Сохранить и выберите одну из доступных опций экспорта. Movavi Video Editor поддерживает все популярные видеоформаты, так что вы можете сохранить готовое видео в AVI, MP4, 3GP, MOV или в любом другом формате. Вы также можете сохранить видео для просмотра на персональном компьютере, ноутбуке или мобильном устройстве. Чтобы начать экспорт видео, нажмите Старт. Вот и все! Теперь вы знаете, какой программой проще и эффективнее всего повернуть видео.
Видеоредактор Movavi
Создавать видео – проще простого!
Редактируйте видео, фото и аудио на монтажном столе
Добавляйте переходы, фильтры и титры
Применяйте спецэффекты – например, Хромакей и Замедленное движение
Сохраняйте видео в любом популярном формате