Главная страница
Навигация по странице:

  • Что нам понадобится для работы

  • 3.2_Работа_с_изображениями_с_помощью_Numpy. 3. 2 Работа с изображениями с помощью Numpy


    Скачать 176.68 Kb.
    Название3. 2 Работа с изображениями с помощью Numpy
    Дата28.11.2022
    Размер176.68 Kb.
    Формат файлаpdf
    Имя файла3.2_Работа_с_изображениями_с_помощью_Numpy.pdf
    ТипДокументы
    #817265

    3.2 Работа с изображениями с помощью Numpy
    Мы уже познакомились с библиотекой Numpy, с функциями и возможностями массивов. Теперь попробуем перевести наши знания в более практическую плоскость - будем работать с изображением, как с массивом.
    Все вы знаете, что любое растровое изображение - это двумерный набор пикселей. Двумерный в том смысле, что есть горизонталь и вертикаль (x и y). Каждый пиксель - это точка определенного цвета.
    Цвет такой точки характеризуется одним числом от 0 до 255, если изображение черно-белое, и тремя числами от 0 до 255, если изображение цветное (RGB-модель, где учитывается красный, зеленый и синий цвета, остальные цвета получаются из сочетания значений этих цветов).
    Отсчет пикселей на изображениях идет слева направо и сверху вниз.
    Этой информации достаточно, чтобы попробовать использовать некоторые из методов, которые мы изучили в прошлый раз.


    Что нам понадобится для работы?
    Я буду использовать Google Colab, вы можете выбрать другую среду разработки. Преимуществом Colab является то, что там уже установлено все, что нам надо. Но вы вольны выбирать себе инструменты, подходящие для вас. Если у вас еще не установлен numpy, а еще matplotlib - библиотека для визуализации, то самое время установить.
    Делается это через командную строку или через менеджер виртуальных окружений. В любом случае, важно понимать, что это команды, а не код на Python.
    И еще нам надо будет из этих библиотек импортировать нужные модули. С numpy все как обычно, ничего нового, а вот matplotlib понадобится нам в двух ролях, поэтому два импорта. imread() нужен, чтобы загрузить изображение и преобразовать его в массив. А pyplot служит для визуализации. Обычно речь идет о визуализации графиков, но картинки, как совокупность точек, тоже можно выводить на координатную плоскость. Так мы сможем отследить, правильные ли действия мы делаем с изображением.

    План такой:
    - Вывести исходное изображение на экран;
    - Узнать, что из себя будет представлять наш массив;
    - Посмотреть, как значения массива влияют на цвета;
    - Попробуем разные действия, чтобы изменить исходное изображение.
    Приступим:
    Чтобы работать в Colab с изображениями, то есть с файлами, нужно подключить Google Диск. Для этого нажмем на символ папки, нам покажется файловая структура облачной виртуальной машины. И в эту структуру нужно добавить Google Диск. Нажмем на еще одну кнопку,
    Диск подключается... Готово.
    Теперь найдем среди множества папок нужную картинку. Я возьму изображение, поясняющее RGB-модель. Вы можете взять любую другую.

    Импортируем библиотеки. import numpy as np from matplotlib.image import imread import matplotlib.pyplot as plt
    Прочитаем и выведем картинку на экран. Для этого используем модули из matplotlib img = imread('/content/drive/MyDrive/кванториум/казахи/RGB- color-model.jpeg') plt.imshow(img) plt.show()
    Посмотрим размерность массива. img.shape
    Третье измерение массива - это цвета. Изображение складывается из трех цветов. Давайте выделим отдельные цветовые каналы. Для этого зададим срез. plt.imshow(img[:, :, 2]) plt.show()
    В многомерных массивах срезы задаются диапазонами по каждому измерению, записываясь через двоеточие. Получается, что мы включаем все координаты по горизонтали и вертикали и один какой- нибудь цвет. Что мы видим из одноканальных изображений? В области
    белого цвета присутствуют все цвета. Там, где цвета нет, там темная область. Где на оригинале изображения черный цвет, черный будет и на одноканальных картинках.
    Теперь давайте вырежем небольшой фрагмент изображения. img_cut = img[100:200, 300:500] plt.imshow(img_cut) plt.show()
    Попробуем закрасить эту область изображения серым цветом. Только массив не даст нам вносить изменения в него. Нужно создать его копию. c_img = img.copy() c_img.flags
    Закрасим часть скопированного изображения в серый цвет c_img[100:200, 300:500] = (231, 230, 230) plt.imshow(c_img) plt.show()
    Создадим изображение, которое будет иметь другой размер. Увеличив вторую составляющую в два раза, мы видим, что пиксели повторяются. img1 = np.resize(img, (720, 1440, 3)) plt.imshow(img1) plt.show()

    Таким образом мы познакомились с numpy и массивами, рассмотрели, как это можно использовать для работы с изображениями. И теперь мы готовы перейти к итоговому заданию, которое базируется как раз на этой теме.


    написать администратору сайта