Arhn - архитектура программирования

Вращение изображения в питоне: экстраполировать цвет фона

Я вращаю изображение со следующим кодом Python:

from PIL import Image

img = Image.open('banana.jpg')
rotated = img.rotate(10)
rotated.save('banana-rotated.jpg')

Это приводит к следующему преобразованию:

введите описание изображения здесь на введите здесь описание изображения

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

Есть ли способ расширить изображение по краям, с помощью цвета, экстраполированного из изображения? В идеале это также сработает, если у изображения нет однородного фона.


  • правильный способ - использовать отдельное изображение для фона, а затем поместить transparent версию другого изображения (которое вы хотите повернуть) поверх фонового изображения. Вращение изображения переднего плана не повлияет на фон, а также у него не будет видимых границ. 27.03.2018
  • @anekix: Звучит многообещающе. Но что мне использовать в качестве фонового изображения? Поскольку я вращаю много изображений, мне нужно отдельное фоновое изображение для каждого из них. Думаю, я мог бы использовать изображение, которое хочу повернуть, в качестве фонового изображения? Но, может быть, есть лучший способ? 27.03.2018
  • эти изображения генерируются динамически? например, отправленные пользователем, или у вас просто есть куча изображений, которые вы хотите обработать? 27.03.2018
  • @anekix: я хочу обработать кучу изображений. Они не генерируются динамически, но их очень много. 27.03.2018
  • вы можете сослаться на это для получения помощи. Результат, который вы получаете выше ожидается, поскольку в вашем примере нет понятия фонового и переднего плана. 27.03.2018
  • Если вы знаете тип изображения, вы можете получить RGB области 4 углов и использовать его для заполнения новых углов. Это может работать на ваших изображениях. В общем, нет плоского цвета фона, поэтому обычный метод — поворот + обрезка. 27.03.2018

Ответы:


1

Это может помочь: https://pillow.readthedocs.io/en/5.2.x/releasenotes/5.2.0.html#image-rotate

Pillow 5.2.0 и более поздние версии. Новый именованный параметр с именем fillcolor был добавлен в Image.rotate. Этот цвет указывает цвет фона, используемый в области за пределами повернутого изображения.

image.rotate(45, fillcolor='white')

Может помочь, если изображение было повернуто на x градусов, отличных от 90 180 270,

04.09.2018
  • Я думаю, что автор явно написал, что он не хочет использовать жестко заданный цвет (например, white), а хочет использовать цвет, экстраполированный из изображения. 04.09.2018
  • @ Ptaq666 Ptaq666 Вы всегда можете использовать цвет фона в качестве параметра. Это одно из многих решений, которые можно было бы использовать. Это самый простой способ решить эту проблему. 05.09.2018

  • 2

    Это не очень хорошо, но вы всегда можете заполнить границы средним цветом исходной границы.

     image.rotate(5, fillcolor=tuple(np.mean(np.array(image)[0,:], axis=0).astype(int)))
    
    04.04.2021
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..