Метод 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 numpy as np
# Сгенерировать двумерный случайный массив
img = np.random.rand(10, 10)
# Построить изображение в оттенках серого
plt.imshow(img, cmap='gray')
# Отображение изображения
plt.show()
В приведенном выше примере мы сгенерировали случайный массив размером 10x10 и использовали функцию imshow() для отображения его в оттенках серого.
Мы установили параметр cmap в значение gray, что означает, что изображение будет отображаться с использованием цветовой карты в оттенках серого.
Результат отображения выглядит следующим образом:

Отображение цветного изображения
Пример
import numpy as np
# Сгенерировать случайное цветное изображение
img = np.random.rand(10, 10, 3)
# Отобразить цветное изображение
plt.imshow(img)
# Отображение изображения
plt.show()
В приведенном выше примере мы сгенерировали случайное цветное изображение размером 10x10 и использовали функцию imshow() для его отображения.
Поскольку цветное изображение является трехмерным массивом, нет необходимости задавать параметр cmap.
Результат отображения выглядит следующим образом:

Отображение тепловой карты
Пример
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 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 numpy as np
# Сгенерировать случайную матрицу
data = np.random.rand(10, 10)
# Построить матрицу
plt.imshow(data)
# Отображение изображения
plt.show()
В приведенном выше примере мы сгенерировали случайную матрицу и использовали функцию imshow() для отображения её в виде изображения.
Поскольку матрица также является двумерным массивом, функцию imshow() можно использовать для её отображения.
Результат отображения выглядит следующим образом:

Другие примеры
Следующий код создаёт двумерный массив numpy размером 4x4 и выполняет над ним три различных отображения изображения с помощью imshow.
- Первый показывает метод цветового сопоставления в оттенках серого, без выполнения смешивания цветов.
- Второй показывает изображение с использованием цветовой карты viridis, также без выполнения смешивания цветов.
- Третий показывает изображение с использованием цветовой карты viridis и использует метод бикубической интерполяции для смешивания цветов.
Пример
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()
Результат отображения выглядит следующим образом:
