Python отобразить картинку из файла
Бывает такой заходишь на почту и видишь очередную подборку статей, которые никогда не прочитаешь, но тут так сошлись звезды, что и открыл статью, и прочел, и придумал, где на практике пригодится. А теперь хочу поделиться статьей с Хабром, чтобы если кому-то нужен будет простой и понятный гайд по работе с изображениями на Python — пожалуйста.
Pillow — это свободно распространяемая библиотека для работы с изображениями (далее Imaging Library) на Python с открытым исходным кодом, которая добавляет вашему коду поддержку открытия, изменения и сохранения изображений в различных расширениях.
6. SimpleCV
SimpleCV — это еще один фреймворк с открытым кодом для создания приложений по компьютерному зрению. С ним у вас появляется доступ к нескольким мощным библиотекам компьютерного зрения (например, OpenCV) без необходимости изучения глубины цвета, файловых форматов, цветовых пространств и т.д. Кривая обучения куда меньше, чем в OpenCV, и, как говорится в их слогане, «компьютерное зрение становится проще». Парочка плюсов SimpleCV:
- Простые тесты по машинному зрению смогут написать даже начинающие программисты.
- Функциональная совместимость с камерами, видеофайлами, изображениями и видеопотоками.
Ресурсы
Руководство по OpenCV2-Python поможет быстрее освоиться в библиотеке.
Пример 3: без расширения
В этом примере мы попытаемся прочитать изображение без расширения. Мы не указываем расширение изображения, если это JPG, PNG и т.д.
Image.open() определяет кодек изображения, используя данные и метаданные, присутствующие в содержимом изображения.
Ресурсы
Понятная документация с множеством практических примеров.
Пример
Итоги
В этой статье мы поговорили о самом простейшем – загрузке и записи мультимедийного контента. OpenCV – очень мощный инструмент, который можно использовать для гораздо более высокоуровневых работ.
На данный момент, я надеюсь, что вам стало гораздо удобнее работать с OpenCV. На самом деле, я бы посоветовал вам почитать официальную документацию и повозиться с кодом, пока я пишу следующую статью этой серии, которую посвящу более сложному контенту.
Ссылки на следующие статьи будут появляться здесь же, так что следите.
Код на GitHub
Getting Started with Videos — OpenCV-Python Tutorials 1 documentation (opencv-python-tutroals.readthedocs.io)
Из этой статьи вы узнаете о способах извлечения текста из цифровых изображений с использованием python и библиотеки pytesseract. Изображение должно иметь текст внутри, чтобы получить выходной текст.
Для извлечения текста с помощью pytesseract необходимо установить библиотеки в среду системы. Приведенные ниже команды помогут установить необходимые библиотеки в системе.
Команда для установки библиотеки OpenCV:
Команда для установки библиотеки pytesseract-ocr:
Необходимо также установить конфигурационный файл tesseract, чтобы получить файл tesseract.exe по следующей ссылке:
Скачайте вышеуказанный файл в соответствии с конфигурацией системы, затем установите его. Файл tesseract.exe будет располагаться по следующему пути:
Посмотрим на входное изображение, из которого нужно извлечь текст:
На этом примере рассмотрим способ извлечения текста из полутонового изображения, а на следующем примере — из цветного изображения с ограничительной рамкой.
Извлечение текста из полутонового изображения
Для начала импортируем необходимые библиотеки:
Теперь будем использовать библиотеку pillow для открытия/чтения изображения:
- Метод open используется для чтения изображения из рабочего каталога.
- Метод resize используется для изменения размера изображения.
- Метод save используется для сохранения изображения после изменения размера.
Определим путь к бинарному файлу tesseract, как показано ниже:
Пришло время использовать метод image_to_string класса tesseract для извлечения текста из изображения:
Обнаружение и извлечение текста из цветного изображения
На этот раз будем извлекать текст из цветного изображения. Образец цветного изображения показан ниже.
В этом примере будем использовать ограничительную рамку и другие методы OpenCV.
Установите необходимые библиотеки:
Теперь определим путь к бинарному файлу tesseract, как показано ниже:
Чтение изображения с помощью метода OpenCV:
Преобразование цветного изображения в полутоновое для лучшей обработки текста:
Теперь преобразуем полутоновое изображение в бинарное, чтобы повысить вероятность извлечения текста:
Здесь метод imwrite используется для сохранения изображения в рабочем каталоге.
Бинарное изображение. Картинка автора
Чтобы задать размер предложений или даже слов изображения, понадобится метод структурных элементов в OpenCV с размером ядра в зависимости от площади текста:
Следующий шаг — применение метода расширения двоичного изображения для получения границ текста:
Операция расширения изображения. Картинка автора
Можно увеличить число итераций в зависимости от пикселей переднего плана, т.е. белых пикселей, чтобы получить правильную форму ограничительной рамки.
Теперь воспользуемся методом find contour для получения площади белых пикселей.
Чтобы выполнить некоторые операции с изображением, скопируйте его в другую переменную:
Теперь пришло время магического преобразования изображения. Для этого получим координаты области белых пикселей и нарисуем вокруг нее ограничительную рамку, а также сохраним текст с изображением в текстовый файл:
Вывод изображения с ограничительной рамкой.
Ограничительная рамка на тексте. Картинка автора
Результат работы с текстовым файлом.
Извлеченный текст в файле. Картинка автора
Учтите следующую закономерность: если число итераций равно 1, то текст не сохраняется в текстовом файле; результат получается после увеличения числа итераций до 3.
Если код работает правильно, но результат не выводится, проверьте или измените размер ядра и число итераций.
Чтобы извлечь изображение каждой ограничительной рамки, выполните следующие действия:
Наш сегодняшний мир переполнен данными, большая часть которых состоит из изображений. Однако для работы с изображениями требуется их обработка. Обработка изображений — это процесс анализа и работы с цифровым изображением, направленный на улучшение качества картинки или извлечения информации для дальнейшего использования.
Общие задачи сводятся к отображению изображения и выполнению основных операций (кадрирование, отражение, вращение, сегментация, классификация, извлечение признаков, восстановление и распознавание). Python является отличным средством для решения подобных задач. Благодаря доступности и растущей популярности Python в качестве языка научно-технического программирования, внутри экосистемы появилось множество первоклассных инструментов для обработки изображений.
Давайте рассмотрим популярные Python-библиотеки для работы с изображениями.
Работа с видео в OpenCV
Теперь, когда мы закончили с изображениями, пришло время познакомиться с основами взаимодействия с веб-камерой или видеофайлами в OpenCV. Работа с видео мало чем отличается от работы с изображениями, поскольку видео состоит из кадров, которые по сути являются изображениями.
Для начала импортируем библиотеки.
Теперь создадим объект VideoCapture , чтобы, как следует из названия, «захватывать» видео.
Число, которое мы передаем, означает источник. 0 – первая веб-камера в вашей системе, 1 – вторая и т.д.
Если вы хотите загрузить уже существующий видеофайл вместо захвата прямой трансляции, просто на место номера вставьте путь к нему.
Затем создадим цикл while , чтобы получать из источника кадр за кадром.
Функция cap.read() возвращает логическое значение (True/False) и кадр. Если кадр был считан верно, то возвращается True.
cv2.imshow() используется для отображения видео. Название видео будет первым аргументом.
Поскольку мы сделали бесконечный цикл, нам нужно что-то, что его прервет.
Поначалу этот фрагмент кода может показаться странным, но как только вы разберетесь в деталях, станет легче.
Функция waitKey(0) возвращает -1, когда ввод вообще не производится. Как только происходит событие, то есть нажимается кнопка, она возвращает 32-разрядное целое число.
Следовательно, сравнивая целое число со значением ord(char) , мы можем проверить событие нажатия клавиши и прервать цикл[1].
После того, как мы закончим использовать камеру, ее нужно «освободить». Если мы этого не сделаем, то в следующий раз при попытке ее использовать, вы получите ошибку.
Теперь пришло время запустить файл. На всякий случай, если вы не проследили, приведу весь код этого раздела:
После выполнения файла, вы увидите изображение с веб-камеры в окне под названием «video feed». Чтобы закрыть окно, нажмите «q».
Помните, как мы преобразовали наше цветное изображение в оттенки серого и сохранили его на диске? То же самое можно сделать и с видео. Нужно просто внести несколько незначительных изменений.
В цикл while добавьте следующие инструкции:
После сохранения и выполнения файла вы получите два окна:
Версию в оттенках серого.
Теперь мы можем выводить два или более окон, когда хотим сравнить наши изменения с исходным файлом/потоком. Так проще обнаруживать изменения, которые мы внесли.
Имя выходного файла будет первым аргументом. Затем нужно передать количество кадров в секунду (fps) и размер кадра.
Чтобы сохранить видео, нужно записать каждый кадр в цикле while.
Не забудьте в конце освободить экземпляр VideoWriter .
После выполнения этого кода вы заметите, что видео с именем «output.avi» будет присутствовать в вашем главном каталоге. Вот видео, которое мы только что записали и сохранили на диск.
Создание новых изображений
С помощью Pillow вы также можете создать новое пустое изображение, которое может понадобиться для различных целей. Используйте Image.new() для создания совершенно нового изображения.
Синтаксис:
Пример использования:
Начало работы с OpenCV
Поскольку мы начинаем с самого начала, в этом разделе мы поговорим об основах обработки изображений. Чтобы начать работать с OpenCV, надо сначала ее установить. Для этого введите команду в терминале (на Windows):
Как только установка будет завершена, можно начинать писать код.
Для начала давайте импортируем необходимые библиотеки.
Работать мы будем с этим изображением.
Разместите это изображение (или любое другое на выбор) в директорию, где находится ваш файл с программой.
В терминале мы передадим это изображение в качестве аргумента, поэтому в файле с исходным кодом нужно сделать парсер аргументов.
После создания экземпляра argparse , добавим аргумент, который, по сути, сообщает, что изображение передается, как аргумент, и его нужно распарсить. Затем обработанный аргумент передается функции vars() , которая возвращает атрибут dict указанного объекта.
С помощью метода imread из cv2, мы положим изображение в переменную image .
Первый аргумент, передаваемый функции – это args[“image”] , обработанный аргумент, содержащий путь к изображению. Поскольку мы сохранили изображение в той же папке, просто передадим имя файла изображения.
Второй аргумент конвертирует изображение в оттенки серого. Этот шаг мы будем часто выполнять при работе с изображениями и видео, потому что обработка цветных изображений намного сложнее и занимает много времени, тогда как зачастую изображений в оттенках серого вполне достаточно для многих задач. Следовательно, нам нет необходимости использовать более сложные и трудные в обработке цветные изображения.
Для отображения изображений используется метод imshow. Первый аргумент – заголовок отображаемого изображения, а второй – сама переменная изображения.
cv2.waitKey(0) будет ждать, пока пользователь не нажмет любую клавишу, после чего окно с изображением закроется.
Помимо вывода самого изображения, эту переменную image можно использовать для отображения некоторой базовой информации, такой как высота и ширина изображения.
OpenCV позволяет сохранить этот файл и записать его на диск. Что интересно, OpenCV также под капотом обрабатывает преобразование типов, то есть вы можете сохранить изначально .jpg файл в формате .jpg.
Метод imwrite принимает путь к выходному изображению, которое будет сохранено в качестве первого аргумента, и переменную с изображением в качестве второго. Если вы хотите изменить тип файла, просто измените его в имени пути, а OpenCV позаботится об остальном.
А вот и полный код:
Команда для выполнения файла:
Примечание: Я назвал файл с программой app.py, а файл с изображением photo_one.jpg, не забудьте вставить свои названия.
После выполнения этого файла, вы получите исходное изображение в оттенках серого:
В вашем основном каталоге создастся папка с изображениями, в которой вы увидите то же изображение, что и в файле newimage.jpg.
Чтение изображения из открытого файла
Кроме того, вы можете использовать Pillow для чтения изображения из файлового объекта Python, как показано ниже
1. scikit-image
scikit-image — это Python-пакет с открытым кодом, который работает с массивами NumPy . Он реализует алгоритмы и утилиты для использования в исследовательских, образовательных и промышленных приложениях. Это весьма простая и понятная библиотека даже для новичков в экосистеме Python. Данная библиотека содержит высококачественный и рецензированный код, написанный активным сообществом добровольцев.
Геометрическое преобразование
С помощью Pillow мы можем выполнять некоторые геометрические преобразования над изображением, включая изменение размера и поворот изображения.
Эти знания играют большую роль при генерации данных для глубокого обучения путем преобразования одного изображения в тонны других изображений с разных ракурсов.
Давайте начнем
Самый важный класс в Imaging Library Python — это класс Image, определенный в одноименном модуле. Мы используем open(), чтобы открыть изображение в нашей локальной директории, как показано ниже:
Это просто! Теперь вы умеете считывать изображения с помощью Pillow, а значит можно приступать к обработке изображения с его помощью. Вы также можете проверить тип изображения, которое мы только что загрузили.
Вы можете посмотреть свойства изображения, например:
Кроме того, вы можете вывести на экран изображение, используя метод show
Ресурсы
Документация содержит инструкции по установке, практические примеры, а также пошаговые уроки по освоению Mahotas.
7. Mahotas
Mahotas также является Python-библиотекой для компьютерного зрения и обработки изображений. Она содержит стандартные функции по обработке изображений (фильтры и морфологические операции), а также современные возможности компьютерного зрения для вычисления признаков (обнаружение особых точек и локальные дескрипторы). Быстрота разработки обеспечивается Python-интерфейсом, а плюсом для скорости служат алгоритмы на С++. Mahotas — это быстрая библиотека с минималистичным кодом и зависимостями. Более подробно описано в документации.
Пример
Наглядный пример использования OpenCV-Python при наложении изображения с помощью пирамид. В результате мы создаем новый фрукт под названием «аплоко».
Примеры
Отрисовка линий, базовых фигур и радиальных градиентов.
3. SciPy
SciPy — это такой же важный научный модуль в Python, как и NumPy. Он подходит для решения основных задач по обработке и прочей работе с изображениями. В частности, в подмодуле scipy.ndimage доступны функции, которые работают в n-мерных массивах NumPy. Текущий пакет включает в себя функции для линейной и нелинейной фильтрации, бинарной морфологии, интерполяции В-сплайнами и измерений объектов.
Ресурсы
Библиотека хорошо задокументирована с обилием практических примеров. Ознакомиться с документацией можно здесь.
Ресурсы
Подробная информация по установке и работе доступна в GitHub-репозитории PyCairo. Есть еще вводное руководство с кратким описанием PyCairo.
4. PIL/ Pillow
PIL (Python Imaging Library) — это бесплатная Python-библиотека для открытия, работы и сохранения различных форматов изображений. К сожалению, ее разработка окончательно остановилась, а последнее обновление вышло в 2009. К счастью, есть Pillow — активно развивающийся форк PIL с простой установкой. Он работает на всех основных операционных системах и поддерживает Python 3. Библиотека содержит базовый функционал для обработки изображений, включая точечные операции, фильтры с набором встроенных ядер свертки и преобразование цветового пространства.
Пример исползования
Давайте попробуем нарисовать прямоугольную рамку внутри пустого изображения.
Первые две координаты представляют (x, y) левой верхней части, а следующие две (x2, y2) представляют координатную точку правой нижней части.
Рисование прямоугольников на изображениях
Pillow также может использоваться для рисования прямоугольника на изображениях. Обычно это делают при обнаружении объекта. При этом вы можете нарисовать не просто прямоугольник, а рамку над обнаруженным объектом.
8. SimpleITK
ITK или Insight Segmentation and Registration Toolkit — это кросс-платформенная система с открытым кодом, предоставляющая расширенный набор инструментов для анализа изображений. Сюда относится и SimpleITK — упрощенный слой, «надстроенный» поверх ITK. Данный слой облегчает работу с библиотекой при быстром прототипировании, обучении и интерпретируемых языках. SimpleITK — это набор инструментов для анализа изображений с большим количеством компонентов, поддерживающих общую фильтрацию, сегментацию и регистрацию изображений. Сам SimpleITK написан на C++, но доступен для многих языков программирования, включая Python.
Чтение изображения из URL
В этом случае вам придется использовать Pillow в сочетании с запросами. Запросы должны будут отправлять GET-request на сервер, чтобы получить необработанные байты изображения, а уже Pillow считает эти байты.
Пример 3: с определенным цветовым режимом
В наших предыдущих примерах мы использовали режим RGB для создания изображения. Давайте попробуем с другим режимом, например CMYK.
В этом руководстве на примерах Python мы узнали, как создать новое изображение с помощью метода Image.new() библиотеки Pillow с помощью примеров программ.
Генератор изображений
После запуска скрипта, вы должны увидеть 360 изображений одного и того же исходного изображения с разным поворотом, как показано ниже.
Ресурсы
В документации описан процесс установки и примеры использования каждого модуля библиотеки.
Пример
Анимация ниже — это визуализация процесса преобразования при регистрации КТ- и МРТ-снимков в SimpleITK и Python. Исходный код доступен здесь.
Ресурсы
Jupyter Notebook показывает использование SimpleITK в образовательных и исследовательских целях. Он также демонстрирует возможности SimpleITK по интерактивному анализу изображений с использованием языков программирования Python и R.
Давайте начнем
Самый важный класс в Imaging Library Python — это класс Image, определенный в одноименном модуле. Мы используем open(), чтобы открыть изображение в нашей локальной директории, как показано ниже:
Это просто! Теперь вы умеете считывать изображения с помощью Pillow, а значит можно приступать к обработке изображения с его помощью. Вы также можете проверить тип изображения, которое мы только что загрузили.
Вы можете посмотреть свойства изображения, например:
Кроме того, вы можете вывести на экран изображение, используя метод show
Пример
Mahotas решает задачи с помощью простого кода. Для задачи «Где Уолли?» Mahotas требуется минимальное количество кода. Вот исходный код.
Как прочитать изображение?
В этом руководстве мы узнаем, как читать или открывать изображение с помощью библиотеки Pillow, а также различные ситуации, с которыми можно столкнуться, с помощью примеров программ.
- Импортировать изображение из библиотеки PIL.
- Используйте метод Image.open() и передайте путь к файлу изображения в качестве аргумента. Функция возвращает объект Image. Вы можете сохранить этот объект изображения и применить к нему операции с изображением.
Пример
Улучшение изображения через ImageFilter в Pillow:
Фильтрация изображений
Фильтрация — это метод изменения или улучшения изображения. Например, вы можете отфильтровать изображение, чтобы выделить определенные особенности или удалить другие.
Фильтрация изображений используется для получения различных результатов, как, например,- сглаживание, повышение резкости, удаление шума и обнаружение краев.
В библиотеке Pillow доступно множество фильтров, включая BLUR, BoxBlur, CONTOUR, FIND_EDGES, Filter, GaussianBlur, Kernel, MaxFilter, MedianFilter, SHARPEN, SMOOTH и т.д.
Пример 1: с использованием PIL
В следующем примере мы будем читать изображение с помощью функции Image.open() пакета PIL.
Image.open() возвращает объект типа класса PIL.PngImagePlugin.PngImageFile.
В этом примере файл изображения помещается в то же место, что и файл примера python. Если вы хотите прочитать изображение, находящееся в другом месте, вы должны указать полный путь.
В следующем примере программы мы предоставим полный путь к входному изображению.
Пример 1
В этом примере мы создадим новое изображение в режиме RGB с размером (400, 300). Мы не будем указывать цвет, поэтому методы new() считают значение цвета по умолчанию 0 – для каналов RGB будет черным цветом.
Метод show() отобразит изображение на вашем ПК с помощью приложения для просмотра изображений по умолчанию.
9. pgmagick
pgmagick — обертка на базе Python для библиотеки GraphicsMagick. Систему GraphicsMagickиногда называют швейцарским ножом в обработке изображений. Она предлагает коллекцию эффективных инструментов и библиотек, поддерживающих чтение, запись и операции с изображениями в более чем 88 основных форматах, включая DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM и TIFF.
Синтаксис
Синтаксис метода Image.new():
- mode – это режим изображения, например, RGB, RGBA, CMYK и т.д;
- size – это кортеж с шириной и высотой изображения в качестве элементов, значения ширины и высоты указаны в пикселях;
- color предназначен для закрашивания всех пикселей, в зависимости от режима значения могут быть предоставлены для каждой полосы в целом в виде кортежа. Параметр цвета является необязательным, значение цвета по умолчанию – 0.
Примеры
Вот несколько операций с изображениями, которые можно выполнить в pgmagick:
Пример использования
Давайте попробуем найти края на изображении ниже, используя фильтр FIND_EDGES.
Таким же образом вы можете экспериментировать с другими фильтрами в Python библиотеке Pillow в зависимости от того, что вы пытаетесь сделать.
10. PyCairo
PyCairo представляет собой набор привязок Python-кода для графической библиотеки Cairo. Cairo — это 2D-библиотека для отрисовки векторной графики. Векторная графика интересна тем, что не теряет своей четкости при изменении размеров или трансформации. PyCairo — это набор привязок для Cairo, с помощью которых можно вызывать Cairo-команды из Python.
Конвертирование расширения изображения
Когда вы закончите работать с изображением при помощи библиотеки Pillow в изначальном расширении, вы можете пересохранить его в других форматах, например, их jpg сделать png или многие другие.
Для примера, давайте попробуем написать простую программу на Python для преобразования всех изображений в каталоге вашего проекта, которые находятся в формате jpg, в формат png.
После того, как вы запустите приведенный выше код, в каталоге проекта, состоящем из изображений в формате jpg, откроются все изображения и преобразуются в .jpg, как показано на скриншоте. Вы можете повторить тот же процесс для преобразования изображений в другие преобразований.
Ресурсы
Полный список функций в пакете scipy.ndimage доступен в документации.
5. OpenCV-Python
OpenCV (Open Source Computer Vision Library) — одна из самых популярных библиотек для приложений по компьютерному зрению.OpenCV-Python — это Python-версия интерфейса для OpenCV. Наличие кода на C/C++ в бэкенде гарантирует быстроту библиотеки, а Python-обертка во фронтенде обеспечивает легкость настройки и развертывания. Благодаря этому OpenCV-Python является отличным решением для высоконагруженных вычислительных программ по компьютерному зрению.
Изменение размера изображения
Когда вы запустите приведенный выше код, вы должны увидеть новое изображение с измененным размером в вашем каталоге с размером 320 на 320.
Ресурсы
pgmagick посвящен целый репозиторий Github. Там вы найдете инструкции по установке и основные требования. Также имеется подробное руководство пользователя.
Рисование текста на изображениях
Мы также можем использовать библиотеку Pillow для рисования текста на изображениях.
Я понимаю, что у каждого свой стиль обучения, но я настоятельно рекомендую вам вместе со мной следовать за мыслью и писать код по мере прохождения уроков. Все файлы кода и данных будут доступны в конце каждой статьи. Если у вас будут появляться вопросы, не стесняйтесь их задавать.
Не будем терять времени, начнем!
2. NumPy
NumPy — это одна из основных Python-библиотек с поддержкой массивов. Изображение представляет собой стандартный массив NumPy, содержащий пиксели точек данных. Таким образом, при выполнении основных NumPy-операций (срезы, маски, прихотливое индексирование) мы можем изменять пиксельные значения изображения. Само изображение можно загрузить через skimage и отобразить с помощью Matplotlib .
Ресурсы
Все ресурсы и документация доступны на официальной странице NumPy.
Пример
Маскирование изображения через NumPy:
Обрезка изображения
Pillow также может использоваться для обрезки изображения, при этом вы можете получить производный прямоугольник выбранного изображения, указав координаты, по которым преобразовать изображение.
Как мы видим, изображение было успешно обрезано. Координаты обрезанной поверхности представлены диагональными координатами.
При этом первые две точки находятся (x, y) от верхней левой диагональной точки, а следующие две точки (x2, y2) также являются диагональной точкой снизу справа.
Пример 2: с определенным цветом фона
В этом примере мы создадим новое изображение с режимом RGB, размером (400, 300) и цветом (209, 123, 193), соответствующим красному, зеленому и синему каналам соответственно.
Заключение
Существует ряд полезных и бесплатных библиотек по обработке изображений в Python. Какие-то из них широко известны, а о некоторых вы слышите впервые. Поработайте с разными библиотеками и подберите ту, что подходит именно вам.
Чтобы создать новое изображение с помощью библиотеки Python Pillow PIL, используйте метод Image.new().
Пример
Использование SciPy для размытия изображений с помощью фильтра Гаусса:
Пример 2
В этом примере мы моделируем скрипт, в котором мы указываем неверный путь к Image.open(). Другими словами, файл не существует по указанному нами пути.
Поскольку файл изображения отсутствует в этом месте, Image.open() выдает FileNotFoundError.
Поворот изображения
Используйте функцию вращения для создания 360 изображений одного из того же изображения под разными углами — это поможет сгенерировать данные, которые вы потенциально можете использовать для обучения своей модели глубокого обучения.
Примеры
Пакет импортируется как skimage , а большинство функций находится внутри подмодулей. Несколько примеров использования skimage :
Больше примеров доступно в галерее.
Читайте также: