Подробное руководство с исходным кодом.

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

У нас есть много библиотек python, которые дают перевернутое изображение напрямую, используя некоторые встроенные функции. В этой статье будет рассмотрен метод понимания функциональности, скрытой за экранами.

Как хранятся изображения

Мы видим, что при увеличении изображения становятся размытыми, и мы можем видеть отдельные квадраты, известные как пиксели. Пиксели — это основные блоки изображений, которые расширяются по горизонтали и вертикали в соответствии с размерами изображения и хранят необходимые данные о каждом блоке. Значения пикселей — это числа, представляющие числовое значение каждого из этих пикселей. Эти значения пикселей представляют интенсивность пикселей. Значения пикселей для изображений в градациях серого или черно-белых изображений находятся в диапазоне от 0 до 255. Меньшие числа, близкие к нулю, представляют более темный оттенок, а большие числа, близкие к 255, представляют более светлый или белый оттенок.

Точно так же, если мы посмотрим на цветное изображение, каждый пиксель содержит три разных цвета: зеленый, красный и синий. Таким образом, каждый пиксель хранит значения пикселей этих трех разных цветов. А также каждое из этих значений матрицы тоже варьируется от 0 до 255.

Как исследовать изображение с помощью python

В python можно использовать множество библиотек для открытия изображений и преобразования их в массивы. Но в этой статье мы будем использовать в основном три библиотеки для выполнения нашей задачи. «Подушка, IPython.display и Numpy».

Начнем с импорта этих библиотек и функций,

Мы будем использовать модуль Image из библиотеки Pillow/PIL, мы будем использовать модуль Image и из библиотеки IPython Display мы будем используйте модуль display, чтобы увидеть выходные данные в самой записной книжке.

так что теперь мы можем импортировать изображение и посмотреть на него

Итак, после импорта библиотек мы можем использовать файл Image. Открыть, чтобы открыть указанное изображение и сохранить его в переменной. А с помощью модуля дисплея мы можем посмотреть на импортированное изображение. Здесь я импортировал изображение в градациях серого для простоты объяснения. Но эти шаги работают и для цветного изображения.

Давайте посмотрим на пиксели этого изображения…

Чтобы поиграть с этим изображением, мы преобразуем его в массив и давайте проверим сохраненные значения и его форму.

С помощью приведенного выше фрагмента кода мы преобразуем изображение в массив и печатаем массив и форму массива.

На выходе мы видим, что это двумерный массив из 200 столбцов и 200 строк, потому что изображение, которое я использовал, имеет разрешение «200px X 200px». Кроме того, значения каждой позиции представляют собой одно значение, которое варьируется от 0 до 255, поскольку это оттенки серого. Эти два значения могут меняться в зависимости от разрешения и цветовой схемы используемого изображения.

Теперь давайте инвертируем значения…

Как мы уже говорили, значения пикселей находятся в диапазоне от 0 до 225, и мы можем инвертировать каждое значение, вычитая значение из 255. Сначала мы создадим массив той же формы, что и изображение, и инициализируем все значения 255. . И мы можем выполнить простую арифметическую операцию, вычитая массив изображений из нового массива, который мы создали. Это можно легко сделать с помощью Numpy следующим образом:

«нп. full» создаст массив фигур, равный im. shape (это даст форму «массива im», в котором мы сохранили значения исходного изображения)

Итак, теперь мы можем вычесть массив изображений из нового массива, который мы создали, чтобы получить желаемый результат. А функция «astype» помогает нам определить тип данных, который должен быть «целое число без знака uint8 размером 8 бит.» и сохранить массив в переменную «mod_image».

Заключительный этап.

Теперь мы можем проверить вывод с помощью функции «Image.fromarray», которая превращает заданный массив значений в изображение для просмотра в блокноте. И тадаааааааа….. у нас есть вывод следующим образом.

Здесь я предоставляю вам полный код, который может помочь вам перепроверить и подтвердить свое понимание.

Заключительные слова

Я надеюсь, что эта статья дала вам четкое и правильное представление об инвертировании изображения с помощью Python со всеми необходимыми шагами и причинами этих шагов. Тот же код также может преобразовывать цветные изображения, поскольку мы не задаем форму маски жестко, а получаем ее непосредственно из изображения.

Пожалуйста, не стесняйтесь обращаться ко мне за любыми разъяснениями. Спасибо за чтение.