[Python] Уроки компьютерного зрения на Python + OpenCV с самых азов
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В этом цикле уроков я расскажу о том, как использовать библиотеку OpenCV в языке Python. Но для начала несколько слов о самом компьютерном зрении. Как компьютер вообще видит? Если подключить к нему видеокамеру, это еще не значит, что он будет видеть. Мы получим просто набор нулей и единиц. А человек видит что-то осмысленное. Как же из этих нулей и единиц извлечь что-то осмысленно? В этом и состоит задача компьютерного зрения.
Как правило, анализ изображения алгоритмами компьютерного зрения проходит следующие этапы (но некоторых этапов может и не быть):
1. Предобработка изображения. На этом этапе может происходить улучшения качества изображения, такое как увеличение контрастности, повышение резкости или наоборот, размытие изображения, чтобы удалить из него шумы и мелкие незначительные детали. Все это нужно для того, чтобы в дальнейшем было легче производить анализ изображения.
2. Промежуточная фильтрация. На этом этапе к изображению применяют различные фильтры, для того, чтобы обозначить на изображения области интереса или облегчить работу специальным алгоритмам анализа изображения.
3. Выявление специальных признаков (фич). Это может быть выделение особых точек, выделение контуров или еще каких-либо признаков.
4. Высокоуровневый анализ. На этом этапе по найденным признакам на изображения определяться конкретные объекты, и, как правило, их координаты. Так же на этом этапе может происходить сегментация либо какая-то иная высокоуровневая обработка.
Ну а теперь перейдем к делу. Мы рассмотрим работу с Python + OpenCV в среде PyCharm. Сначала нам надо установить OpenCV. Для этого идем в ImportSettings:
Далее в ProjectInterpreterи там жмем на плюсик:
Ищем там opencv и устанавливаем его:
Теперь напишем наш «Hello, World» — программу, которая отобразит картинку:
import cv2
my_photo = cv2.imread('MyPhoto.jpg')
cv2.imshow('MyPhoto', my_photo)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вот такое вот окно откроет данная программа:
Что делает программа? Она загружает изображение из файла, отображает его и ждет нажатие клавиши ESC для завершения работы.
Давайте попробуем что-нибудь сделать с этим изображением. Например, можно изменить его размер. Допустим, мы хотим сделать изображение шириной 200. Для этого вычислим его высоту, и применим эти данные для масштабирования:
import cv2
my_photo = cv2.imread('MyPhoto.jpg')
cv2.imshow('MyPhoto', my_photo)
#Подготовим новые размеры
final_wide = 200
r = float(final_wide) / my_photo.shape[1]
dim = (final_wide, int(my_photo.shape[0] * r))
# уменьшаем изображение до подготовленных размеров
resized = cv2.resize(my_photo, dim, interpolation = cv2.INTER_AREA)
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вот что у нас получилось:
Часто для облегчения анализа изображения требуется сделать картинку черно-белой. Один из способов – это загрузить картинку сразу в черно-белом цветом пространстве:
import cv2
img = cv2.imread('MyPhoto.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('MyPhoto', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Если нужно преобразовать уже загруженную картинку, то можно воспользоваться функцией cvtColor, которая преобразует изображение из одного цветового пространства в другое:
import cv2
img = cv2.imread('MyPhoto.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('MyPhoto', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вот как это будет выглядеть:
Итак, подытожим.
Мы научились устанавливать OpenCV, загружать из файла и отображать изображение, а так же делать в нем простейшие преобразования, такие как масштабирования и конвертацию цветного изображения в черно белое. Если данный урок «зайдет» то будет продолжение.
===========
Источник:
habr.com
===========
Похожие новости:
- Выпуск Python-библиотеки для научных вычислений NumPy 1.20.0
- [Занимательные задачки, Python, Программирование, Математика] L-системы и что они себе позволяют
- [Python, Программирование, Учебный процесс в IT] 10 удивительно полезных базовых функций Python (перевод)
- [Python, Google Cloud Platform] Выжать максимум: Cloud Composer как fully-managed решение для Airflow
- [Python, Data Mining, API, Big Data] Как лайкать четыре тысячи девушек в час
- [Управление разработкой, Управление персоналом, Карьера в IT-индустрии, IT-компании] Почему лучше работать в B2B-проектах: неожиданные факты о разработке в B2B и B2C
- [Python, Data Mining, API] Как лайкать 4000 тысячи девушек в час
- [Мессенджеры, Python, CRM-системы] Телеграм бот для поддержки своими руками
- [Python] Строгая десериализация YAML в Python c библиотекой marshmallow (перевод)
- [C++, Системное программирование, Программирование микроконтроллеров] Запуск сложных C++ приложений на микроконтроллерах
Теги для поиска: #_python, #_opencv, #_python, #_python
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:38
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В этом цикле уроков я расскажу о том, как использовать библиотеку OpenCV в языке Python. Но для начала несколько слов о самом компьютерном зрении. Как компьютер вообще видит? Если подключить к нему видеокамеру, это еще не значит, что он будет видеть. Мы получим просто набор нулей и единиц. А человек видит что-то осмысленное. Как же из этих нулей и единиц извлечь что-то осмысленно? В этом и состоит задача компьютерного зрения. Как правило, анализ изображения алгоритмами компьютерного зрения проходит следующие этапы (но некоторых этапов может и не быть): 1. Предобработка изображения. На этом этапе может происходить улучшения качества изображения, такое как увеличение контрастности, повышение резкости или наоборот, размытие изображения, чтобы удалить из него шумы и мелкие незначительные детали. Все это нужно для того, чтобы в дальнейшем было легче производить анализ изображения. 2. Промежуточная фильтрация. На этом этапе к изображению применяют различные фильтры, для того, чтобы обозначить на изображения области интереса или облегчить работу специальным алгоритмам анализа изображения. 3. Выявление специальных признаков (фич). Это может быть выделение особых точек, выделение контуров или еще каких-либо признаков. 4. Высокоуровневый анализ. На этом этапе по найденным признакам на изображения определяться конкретные объекты, и, как правило, их координаты. Так же на этом этапе может происходить сегментация либо какая-то иная высокоуровневая обработка. Ну а теперь перейдем к делу. Мы рассмотрим работу с Python + OpenCV в среде PyCharm. Сначала нам надо установить OpenCV. Для этого идем в ImportSettings: Далее в ProjectInterpreterи там жмем на плюсик: Ищем там opencv и устанавливаем его: Теперь напишем наш «Hello, World» — программу, которая отобразит картинку: import cv2
my_photo = cv2.imread('MyPhoto.jpg') cv2.imshow('MyPhoto', my_photo) cv2.waitKey(0) cv2.destroyAllWindows() Вот такое вот окно откроет данная программа: Что делает программа? Она загружает изображение из файла, отображает его и ждет нажатие клавиши ESC для завершения работы. Давайте попробуем что-нибудь сделать с этим изображением. Например, можно изменить его размер. Допустим, мы хотим сделать изображение шириной 200. Для этого вычислим его высоту, и применим эти данные для масштабирования: import cv2
my_photo = cv2.imread('MyPhoto.jpg') cv2.imshow('MyPhoto', my_photo) #Подготовим новые размеры final_wide = 200 r = float(final_wide) / my_photo.shape[1] dim = (final_wide, int(my_photo.shape[0] * r)) # уменьшаем изображение до подготовленных размеров resized = cv2.resize(my_photo, dim, interpolation = cv2.INTER_AREA) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() Вот что у нас получилось: Часто для облегчения анализа изображения требуется сделать картинку черно-белой. Один из способов – это загрузить картинку сразу в черно-белом цветом пространстве: import cv2
img = cv2.imread('MyPhoto.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow('MyPhoto', img) cv2.waitKey(0) cv2.destroyAllWindows() Если нужно преобразовать уже загруженную картинку, то можно воспользоваться функцией cvtColor, которая преобразует изображение из одного цветового пространства в другое: import cv2
img = cv2.imread('MyPhoto.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow('MyPhoto', img) cv2.waitKey(0) cv2.destroyAllWindows() Вот как это будет выглядеть: Итак, подытожим. Мы научились устанавливать OpenCV, загружать из файла и отображать изображение, а так же делать в нем простейшие преобразования, такие как масштабирования и конвертацию цветного изображения в черно белое. Если данный урок «зайдет» то будет продолжение. =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:38
Часовой пояс: UTC + 5