Метод Matplotlib imshow()

Функция imshow() — это функция в библиотеке Matplotlib, используемая для отображения изображений.

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

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

Синтаксис метода imshow() выглядит следующим образом:

imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs)

Описание параметра:

  • X: Входные данные. Это может быть двумерный массив, трехмерный массив, объект изображения PIL, объект пути matplotlib и т. д.
  • cmap: Цветовая карта. Используется для управления цветами, соответствующими различным значениям на изображении. Можно выбрать встроенную цветовую карту, напримерgray、hot、jetи т. д., или также можно настроить собственную цветовую карту.
  • norm: Используется для управления методом нормализации значений. Можно выбратьNormalize、LogNormи другие методы нормализации.
  • aspect: Управляет соотношением сторон изображения. Можно установить вautoили число.
  • interpolation: Метод интерполяции. Используется для управления гладкостью и уровнем детализации изображения. Можно выбратьnearest、bilinear、bicubicи другие методы интерполяции.
  • alpha: Прозрачность изображения. Диапазон значений — 0~1.
  • origin: Положение начала координат осей. Можно задать какupperилиlower。
  • extent: Управляет диапазоном отображаемых данных. Можно задать как[xmin, xmax, ymin, ymax]。
  • vmin、vmax: Управляет диапазоном значений цветовой карты.
  • filternorm 和 filterrad: Объект, используемый для фильтрации изображения. Можно задать какNone、antigrain、freetypeи т. д.
  • imlim: Используется для указания диапазона отображения изображения.
  • resample: Используется для указания метода передискретизации изображения.
  • url: Используется для указания ссылки на изображение.

Ниже приведены некоторые примеры использования функции imshow().

Отображение изображения в оттенках серого

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать двумерный случайный массив
img = np.random.rand(10, 10)

# Построить изображение в оттенках серого
plt.imshow(img, cmap='gray')

# Отображение изображения
plt.show()

В приведенном выше примере мы сгенерировали случайный массив размером 10x10 и использовали функцию imshow() для отображения его в оттенках серого.

Мы установили параметр cmap в значение gray, что означает, что изображение будет отображаться с использованием цветовой карты в оттенках серого.

Результат отображения выглядит следующим образом:

Отображение цветного изображения

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать случайное цветное изображение
img = np.random.rand(10, 10, 3)

# Отобразить цветное изображение
plt.imshow(img)

# Отображение изображения
plt.show()

В приведенном выше примере мы сгенерировали случайное цветное изображение размером 10x10 и использовали функцию imshow() для его отображения.

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

Результат отображения выглядит следующим образом:

Отображение тепловой карты

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать двумерный случайный массив
data = np.random.rand(10, 10)

# Отобразить тепловую карту
plt.imshow(data, cmap='hot')

# Отображение изображения
plt.colorbar()
plt.show()

В приведенном выше примере мы сгенерировали случайный массив 10x10 и использовали функцию imshow() для отображения его в виде тепловой карты.

Мы установили параметр cmap в значение hot, что означает, что изображение будет отображаться с использованием тепловой цветовой карты.

Кроме того, мы также добавили colorbar, чтобы увидеть связь между значениями данных и цветами.

Результат отображения выглядит следующим образом:

Отобразить карту

Пример

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

# Загрузить изображение карты, URL для скачивания: /static.jyshare.com/images/demo/map.jpeg
img = Image.open('map.jpg')

# Преобразовать в массив
data = np.array(img)

# Построить карту
plt.imshow(data)

# Скрыть оси
plt.axis('off')

# Отображение изображения
plt.show()

В приведенном выше примере мы загрузили изображение карты и преобразовали его в массив.

Затем мы использовали функцию imshow() для его отображения и использовали функциюaxis('off'), чтобы скрыть оси и лучше рассмотреть карту.

Результат отображения выглядит следующим образом:

Отображение матрицы

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать случайную матрицу
data = np.random.rand(10, 10)

# Построить матрицу
plt.imshow(data)

# Отображение изображения
plt.show()

В приведенном выше примере мы сгенерировали случайную матрицу и использовали функцию imshow() для отображения её в виде изображения.

Поскольку матрица также является двумерным массивом, функцию imshow() можно использовать для её отображения.

Результат отображения выглядит следующим образом:


Другие примеры

Следующий код создаёт двумерный массив numpy размером 4x4 и выполняет над ним три различных отображения изображения с помощью imshow.

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

Пример

import matplotlib.pyplot as plt
import numpy as np

n = 4

# Создать двумерный массив numpy размером n x n
a = np.reshape(np.linspace(0,1,n**2), (n,n))

plt.figure(figsize=(12,4.5))

# Первое изображение показывает метод отображения в оттенках серого без выполнения смешивания цветов
plt.subplot(131)
plt.imshow(a, cmap='gray', interpolation='nearest')
plt.xticks(range(n))
plt.yticks(range(n))
# Отображение в оттенках серого, без смешивания
plt.title('Серая цветовая карта, без смешивания', y=1.02, fontsize=12)

# Второе изображение показывает изображение с использованием цветовой карты viridis, также без выполнения смешивания цветов
plt.subplot(132)
plt.imshow(a, cmap='viridis', interpolation='nearest')
plt.yticks([])
plt.xticks(range(n))
# Отображение viridis, без смешивания
plt.title('Цветовая карта Viridis, без смешивания', y=1.02, fontsize=12)

# Третье изображение показывает изображение, использующее цветовую карту viridis, и использует метод бикубической интерполяции для смешивания цветов
plt.subplot(133)
plt.imshow(a, cmap='viridis', interpolation='bicubic')
plt.yticks([])
plt.xticks(range(n))
# Отображение Viridis, бикубическое смешивание
plt.title('Цветовая карта Viridis, бикубическое смешивание', y=1.02, fontsize=12)

plt.show()

Результат отображения выглядит следующим образом:

Другие расширения