Рубрики
Без рубрики

Как отобразить, изменить и сохранить изображения в Matplotlib

https://youtu.be/3oxzty7hraq Эта статья покажет вам, как визуализировать, изменить и сохранять изображения в Python, более конкретно в Matplotlib. В следующих разделах мы увидим, как загрузить изображения, как изменить некоторые из своих свойств и, наконец, как их сохранить. Короче говоря, если вы хотите импортировать изображение и … Как отобразить, изменить и сохранить изображения в Matplotlib Подробнее »

Автор оригинала: Andrea Ridolfi.

Эта статья покажет вам, как визуализировать, изменить и сохранять изображения в Python, более конкретно в Матплотлиб Отказ В следующих разделах мы увидим, как загрузить изображения, как изменить некоторые из своих свойств и, наконец, как их сохранить.

Короче

Если вы хотите импортировать изображение и отобразить его в Матплотлиб Окно, Матплотлиб Функция Imread () работает отлично. После импорта файла изображения в качестве массива можно создать Матплотлиб Окно и оси, в которых мы можем отобразить изображение с помощью imshow () Отказ Изменяя некоторые свойства, доступные внутри imshow () Мы можем Варьируйте цвет, размер и даже решите обрезать отображаемое изображение. Как только мы довольны результатом из наших модификаций, функция SaveFig () Позволяет сохранить фигуру, указав в качестве входных параметров, путь, в котором мы хотим, чтобы изображение было сохранено. Использование некоторых дополнительных параметров этой последней функции можно решить, сделать ли границы изображения прозрачного или даже удаления их.

Основные функции, которые используются:

потрясение
Синтаксис: imshow ()
Параметры: Х (массивный образ изображения) Файл данных изображения
CMAP (ул.) Colormap.
Альфа (поплавок) прозрачность изображения
Аспект {«равна», «авто»} соотношение сторон осей
Vmin, vmax (float) Минимальные и максимальные значения для диапазона цвета
Возвращаемое значение Никто

Больше информации здесь: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html Отказ

SaveFig.
Синтаксис: SaveFig ()
Параметры: fname (ул или путь) путь, в котором вы хотите сохранить файл
bbox_inches (str) Ограничивающая коробка в дюймах. Если «плотно», попробуйте выяснить туго BBOX фигуры
Pad_inches (float) Количество прокладки вокруг фигуры, когда bbox_inches “Tight ‘.
Возвращаемое значение Никто

Больше информации здесь: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html Отказ

Импортируя изображение в свой скрипт

Мы начинаем учебное пособие, импортируя изображение в наш сценарий, таким образом, мы сможем принять дальнейшие действия и, следовательно, изменять его внешний вид. Для этого мы эксплуатируем Матплотлиб Функция Imread (), Что считывает изображение из файла в массив (официальная документация: https://matplotlib.org/stable/api/as_gen/matplotlib.pyplot.imread.html ).

Функция принимает как единственный входной параметр, путь файла изображения, который мы хотим импортировать.

Файл изображения преобразуется в M X N x 3 (в случае изображения RGB) массива с M и N, стоящим для количества пикселей для ширины и высоты соответственно. В случае изображения RGB, каждый м Я N J Подстрапка будет содержать 3 номера, соответствующих комбинации красных зеленых синих значений, которые идентифицируют этот удельный цвет; В случае изображений RGBA у нас будет массив M x n x 4.

В следующих строках кода мы импортируем Матплотлиб Библиотека и мы Assig на переменной «PIC» массив, описывающий файл изображения, который мы хотели импортировать.

import matplotlib.pyplot as plt

url = r"file_path"
pic = plt.imread(url)
print(pic)

Результатом команды печати отобразится в вашем терминале 3D-массив, описывающий файл изображения, который вы загружены.

Получение размера изображения

Можно знать, сколько пикселей составляют наш образ и какой тип цветового кода он использует, просто применив метод .shape () Для переменной, в которой мы сохранили массив, описывающий файл изображения. Действительно, путем получения формы массива мы получим различные размеры массива, поскольку каждая подставка будет представлять пиксель с его цветовыми значениями, мы получим указание точного количества пикселей, которые составляют наш образ (то есть каждый элемент соответствует пикселю).

# get image pixels
print(pic.shape)
>> (2559, 4550, 3)

В нашем случае у нас есть изображение, которое составляет 2559 пикселей, ширину высотой 4550 пикселей и определяется в соответствии с цветовой схемой RGB (из 3 значений в последнем измерении массива).

Показать изображения в Matplotlib

В этом разделе мы увидим, как отобразить файл изображения в окне MATPLOTLIB; Процедура чрезвычайно проста и действительно похожа на тот, который используется для построения нормального графика. Начнем с создания фигуры MATPLOTLIB и оси.

# display the image in a mpl figure
fig = plt.figure()
ax = fig.subplots()

На данный момент мы используем Матплотлиб Функция imshow () Чтобы отобразить изображение в рамках только созданных осей. imshow () Функция принимает в качестве основного параметра ввода Переменная ссылается на файл изображения, который в нашем случае является «PIC». Результат из следующих строк кода затем отображается на рисунке 1.

ax.imshow(pic)
plt.show()

Изменение свойств отображаемого изображения

Указание других входных параметров в imshow () Функция Можно изменить некоторые свойства отображаемого изображения, как размер, цвет и его прозрачность.

Чтобы иметь возможность изменить только что упомянутые свойства, мы должны индекс Пиксели, на которых мы хотим применять какие-либо изменения, если мы хотим изменить все изображение, нам просто нужно индексировать все пиксели (в этом случае, это означает, что написание PIC [:,:, 1] ). Первое свойство, которое мы изменим, – это прозрачность изображения; Мы можем сделать это, изменив значение Альфа Параметр (от 0 до 1).

Мы также можем изменить Цветная карта Это используется на изображении, например, с использованием карты «серая» цветная карта превратит наше цветное изображение в черно-белое изображение. Эта вещь может быть сделана путем изменения параметра CMAP (Здесь вы можете найти все возможные цветные карты доступны для Matplotlib: https://matplotlib.org/stable/tutorials/Colors/colormaps.html ).

Если мы хотим изменить диапазон цвета, используемый на выбранной цветной карте, мы могли бы изменить значения параметров ВМИН и Vmax для настройки самых высоких и самых низких значений цветовой диапазоны. Если мы не укажем эти два параметра, целый ряд цвет будет использоваться для отображения изображения.

В дополнение к изменению цветовых свойств, мы также можем изменить соотношение сторон пикселей изображения; Это важная тема, которая должна иметь в виду, особенно если мы хотим изменить размер осей фигуры. Это можно сделать, используя параметр аспект; Мы можем выбрать между двумя разными вариантами Авто или равный. Использование Авто Сохраняют оси фиксированные, а соотношение сторон пикселей регулируется соответствующим образом, в основном приводит к не квадратным пикселям. С другой стороны, равный Обеспечивает соотношение аспекта 1 для пикселей на изображении, что означает квадратные пиксели.

Вы можете найти дополнительную информацию о imshow () Функция и все его свойства на официальной странице документации: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html Отказ В следующей строке кода мы назначаем переменную F Файл изображения и изменяем все вышеупомянутые свойства.

f = ax.imshow(pic[:, :, 1], alpha=0.5, cmap='gray',  vmin=0, vmax=500, aspect='auto')

Также возможно добавить цветную панель рядом с изображением Применение метода Colorbar () на рисунку Отказ

f = ax.imshow(pic[:, :, 1], alpha=0.5, cmap='gray',  vmin=0, vmax=500, aspect='auto')

Конечный результат отображается на рисунке 2; Обратите внимание, что, поскольку мы устанавливаем аспект, Соотношение сторон пикселей изменилось, отсюда достижение изображения, форма которого немного отличается (см. Видео для лучшего примера) от одного на рисунке 1.

Изменение диапазона осей и видимости

Как видно из предыдущих фигур, все оси и клещевые этикетки все еще присутствуют и видны в окне построения. В том случае, если мы хотели бы удалить их, и, следовательно, есть только изображение, нанесенное в рамках Матплотлиб Окно, мы можем отключить оси, используя .AXIS («ВЫКЛ»). Если мы также заинтересованы в заговорке только часть изображения, мы можем сделать это, регулируя значение максимальных значений X и Y, которое будет отображаться на каждой из осей. Все эти команды отображаются в следующих строках кода:

# changing the axes properties
ax.set_xlim(0, 2500)
ax.set_ylim(2500, 0)
ax.axis('off')

Вы можете заметить, что мы решили отобразить изображение для всей высоты, но с шириной, переходящей от 0 до значения 2500. Также обратите внимание, что координаты оси Y приведены в инвертированном порядке; Это потому, что ось Y изображений уходит сверху вниз с нижней части рисунка. Если вы дали пределы оси Y в обратном порядке, поручено будет перевернуть. Конечный результат отображается на рисунке 3.

Сохранение файла изображения

Как только мы закончили редактировать наше изображение, мы можем сохранить его, используя Матплотлиб Функция SaveFig (). Единственный обязательный входной параметр – это путь, к которому мы хотим сохранить изображение. В случае, если мы хотим сохранить изображение без какой-либо белой границы, мы можем указать два дополнительных параметра bbox_inches (Установка его на «туго») и Pad_inches (Установка его равна нулю). С первым вариантом мы делаем границу фигуры, чтобы адаптироваться к размеру изображения, со вторым, мы устанавливаем на нулю количество границ вокруг фигуры (мы сначала должны установить «туго» свойства BBOX_INCHES ).

plt.savefig(r"C:\Users\Andrea\Desktop\newimage.jpg", bbox_inches='tight', pad_inches=0)

Выводы

В этой статье мы просто узнали, как импортировать и изменить файл изображения с помощью Matplotlib. Прежде всего, мы импортировали файл изображения в пределах Матплотлиб окно; Затем, используя соответствующие функции, можно было отобразить изображение, изменить его цвет, его размер и соотношение сторон. В конце мы также увидели, как сохранить модифицированное изображение в новый файл изображения. Все эти процедуры представляют собой действительно простое и быстрое решение для быстрого регулировки изображений в пределах Python сессия.