Пошаговое руководство по часто используемым методам работы с изображениями

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

Изменение размера изображения

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

Яркость изображения

Нам легко понять, что мы видим, когда смотрим на изображение, но для машин это может быть немного сложно. Таким образом, чтобы помочь машинам лучше обрабатывать изображение, небольшая яркость может помочь повысить точность.

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

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

Это лишь некоторые из техник обработки изображений, которые мы рассмотрим в этом посте. Их гораздо больше, но, как упоминалось ранее, это наиболее часто используемые методы, которые могут применяться к любому формату изображения. Если готовы, приступим!

Изображение

Прежде чем мы перейдем к кодированию, давайте выберем изображение, с которым мы хотим протестировать наши коды. Это изображение может быть в любом формате, но я бы посоветовал использовать «png» или «jpg». Вот изображение, с которым я играю. В этом изображении хорошо то, что в нем не используются фильтры или эффекты.

Пакеты

Всего мы будем использовать только один пакет. Основная библиотека, которую мы будем использовать для обработки изображений, называется PIL, то есть библиотека обработки изображений. PIL будет установлен как «подушка», не путайте, это одно и то же.

Тогда давайте начнем с установки пакета.

pip install pillow

Пришло время импортировать пакет как библиотеки, чтобы мы могли их использовать.

from PIL import Image, ImageEnhance

Импортировать изображение

Я переименовал свое изображение в «testme.jpg», и на этом этапе я импортирую изображение, назначая его переменной с именем «img». Мы сделаем три наиболее часто используемых техники манипуляции. Чтобы сделать вещи понятными и простыми, я буду использовать одно и то же изображение для каждой техники, но не стесняйтесь определять разные изображения для каждой техники манипуляции.

img = Image.open("testme.jpg")

Техника 1 - Изменение размера

Первое, что мы попробуем с этим изображением, - это изменить его размер. Изменить размер очень легко с помощью библиотеки PIL, которая, как упоминалось ранее, представляет собой библиотеку обработки изображений. После изменения размера изображения я хочу сохранить его, чтобы мы могли видеть изображение после запуска программы. И в конце, чтобы сохранить изображение как файл изображения, мы будем использовать метод «save».

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

print(img.size)

Изменение размера изображения:

newsize = (300, 300) 
img_resized = img.resize(newsize) 
print(img_resized.size)

Теперь мы можем сохранить файл изображения в нашей папке.

img_resized.save("resized.jpg")

Результат

Техника 2 - Яркость

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

# Define enhancer
enhancer = ImageEnhance.Brightness(img) 
img_light = enhancer.enhance(1.8) 
img_light.save("brightened.jpg")

Результат

Как насчет изображений со слишком большим количеством света, можем ли мы что-нибудь для них сделать? Конечно, как и при добавлении света, есть способ его уменьшить. Это будет полезно для изображений, сделанных в солнечный день. Сделать это очень просто, мы просто изменим значение в скобках. Если число больше 1, усилитель добавит света. Если значение находится между 0 и 1, усилитель будет выделять немного света, что сделает изображение темнее.

Чем меньше значение, тем темнее становится. Вы можете поиграть с ценностью и посмотреть, как она действует.

enhancer = ImageEnhance.Brightness(img) 
img_light = enhancer.enhance(0.8) 
img_light.save("darkened.jpg")

Результат

Техника 3 - Оттенки серого

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

img = Image.open('testme.jpg') 
img = img.convert('L') 
img.save('grayscaled.jpg')

Результат

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

Я Бехик Гувен, и мне нравится делиться историями о творчестве, программировании, мотивации и жизни.

Следите за моим блогом и На пути к науке о данных, чтобы оставаться воодушевленным.

Проект компьютерного зрения, который может вам понравиться