- Шпаргалка по OpenCV — Python
- Что такое OpenCV?
- Содержание
- Установка
- Импорт и просмотр изображения
- Кадрирование
- Изменение размера
- Поворот
- Перевод в градации серого и в чёрно-белое изображение по порогу
- Размытие/сглаживание
- Рисование прямоугольников
- Рисование линий
- Текст на изображении
- Распознавание лиц
- Contours — распознавание объектов
- Сохранение изображения
- Заключение
- Install OpenCV-Python in Windows¶
- Goals¶
- Installing OpenCV from prebuilt binaries¶
- Building OpenCV from source¶
- Начало работы с OpenCV: установка OpenCV в Windows + смешивание образов
- 1. Загрузка и настройка Anaconda
- 2. Установка необходимых пакетов (включая Jupyter Notebook и OpenCV)
- Начальное тестирование: ознакомление с ноутбуком Jupyter
- Начало работы с OpenCV: смешивание изображений
Шпаргалка по OpenCV — Python
Что такое OpenCV?
Библиотека компьютерного зрения и машинного обучения с открытым исходным кодом. В неё входят более 2500 алгоритмов, в которых есть как классические, так и современные алгоритмы для компьютерного зрения и машинного обучения. Эта библиотека имеет интерфейсы на различных языках, среди которых есть Python (в этой статье используем его), Java, C++ и Matlab.
Содержание
Установка
Инструкцию по установке на Windows можно посмотреть здесь, а на Linux — здесь.
Импорт и просмотр изображения
Примечание При чтении способом выше изображение находится в цветовом пространстве не RGB (как все привыкли), а BGR. Возможно, в начале это не так важно, но как только вы начнёте работать с цветом — стоит знать об этой особенности. Есть 2 пути решения:
- Поменять местами 1-й канал (R — красный) с 3-м каналом (B — синий), и тогда красный цвет будет (0,0,255) , а не (255,0,0) .
- Поменять цветовое пространство на RGB:
И тогда в коде работать уже не с image , а с rgb_image .
Примечание Чтобы закрыть окно, в котором отображается изображение, нажмите любую клавишу. Если использовать кнопку закрытия окна, можно наткнуться на подвисания.
На протяжении статьи для вывода изображений будет использоваться следующий код:
Кадрирование
Пёсик после кадрирования
Где image[10:500, 500:2000] — это image[y:y + высота, x:x + ширина] .
Изменение размера
После изменения размера на 20 %
Эта функция учитывает соотношение сторон оригинального изображения. Другие функции изменения размера изображений можно увидеть здесь.
Поворот
Пёсик после поворота на 180 градусов
image.shape возвращает высоту, ширину и каналы. M — матрица поворота — поворачивает изображение на 180 градусов вокруг центра. -ve — это угол поворота изображения по часовой стрелке, а +ve , соответственно, против часовой.
Перевод в градации серого и в чёрно-белое изображение по порогу
Пёсик в градациях серого
gray_image — это одноканальная версия изображения.
Функция threshold возвращает изображение, в котором все пиксели, которые темнее (меньше) 127 заменены на 0, а все, которые ярче (больше) 127, — на 255.
Ростелеком информационные технологии , Москва , По итогам собеседования
Для ясности другой пример:
Здесь всё, что темнее, чем 150, заменяется на 10, а всё, что ярче, — на 200.
Остальные threshold-функции описаны здесь.
Размытие/сглаживание
Функция GaussianBlur (размытие по Гауссу) принимает 3 параметра:
- Исходное изображение.
- Кортеж из 2 положительных нечётных чисел. Чем больше числа, тем больше сила сглаживания.
- sigmaX и sigmaY. Если эти параметры оставить равными 0, то их значение будет рассчитано автоматически.
Больше про размытие здесь.
Рисование прямоугольников
Обводим прямоугольником мордочку пёсика
Эта функция принимает 5 параметров:
- Само изображение.
- Координата верхнего левого угла (x1, y1) .
- Координата нижнего правого угла (x2, y2) .
- Цвет прямоугольника (GBR/RGB в зависимости от выбранной цветовой модели).
- Толщина линии прямоугольника.
Рисование линий
2 пёсика, разделённые линией
Функция line принимает 5 параметров:
- Само изображение, на котором рисуется линия.
- Координата первой точки (x1, y1) .
- Координата второй точки (x2, y2) .
- Цвет линии (GBR/RGB в зависимости от выбранной цветовой модели).
- Толщина линии.
Текст на изображении
Изображение с текстом
Функция putText принимает 7 параметров:
- Непосредственно изображение.
- Текст для изображения.
- Координата нижнего левого угла начала текста (x, y) .
- Используемый шрифт.
- Размер шрифта.
- Цвет текста (GBR/RGB в зависимости от выбранной цветовой модели).
- Толщина линий букв.
Распознавание лиц
На этот раз без пёсиков.
Лиц обнаружено: 2
detectMultiScale — общая функция для распознавания как лиц, так и объектов. Чтобы функция искала именно лица, мы передаём ей соответствующий каскад.
Функция detectMultiScale принимает 4 параметра:
- Обрабатываемое изображение в градации серого.
- Параметр scaleFactor . Некоторые лица могут быть больше других, поскольку находятся ближе, чем остальные. Этот параметр компенсирует перспективу.
- Алгоритм распознавания использует скользящее окно во время распознавания объектов. Параметр minNeighbors определяет количество объектов вокруг лица. То есть чем больше значение этого параметра, тем больше аналогичных объектов необходимо алгоритму, чтобы он определил текущий объект, как лицо. Слишком маленькое значение увеличит количество ложных срабатываний, а слишком большое сделает алгоритм более требовательным.
- minSize — непосредственно размер этих областей.
Contours — распознавание объектов
Распознавание объектов производится с помощью цветовой сегментации изображения. Для этого есть две функции: cv2.findContours и cv2.drawContours .
В этой статье детально описано обнаружение объектов с помощью цветовой сегментации. Всё, что вам нужно для неё, находится там.
Сохранение изображения
Заключение
OpenCV — отличная библиотека с лёгкими алгоритмами, которые могут использоваться в 3D-рендере, продвинутом редактировании изображений и видео, отслеживании и идентификации объектов и людей на видео, поиске идентичных изображений из набора и для много-много чего ещё.
Эта библиотека очень важна для тех, кто разрабатывает проекты, связанные с машинным обучением в области изображений.
Install OpenCV-Python in Windows¶
Goals¶
Below steps are tested in a Windows 7-64 bit machine with Visual Studio 2010 and Visual Studio 2012. The screenshots shows VS2012.
Installing OpenCV from prebuilt binaries¶
Below Python packages are to be downloaded and installed to their default locations.
1.3. Matplotlib (Matplotlib is optional, but recommended since we use it a lot in our tutorials).
Install all packages into their default locations. Python will be installed to C:/Python27/.
After installation, open Python IDLE. Enter import numpy and make sure Numpy is working fine.
Download latest OpenCV release from sourceforge site and double-click to extract it.
Goto opencv/build/python/2.7 folder.
Copy cv2.pyd to C:/Python27/lib/site-packeges.
Open Python IDLE and type following codes in Python terminal.
If the results are printed out without any errors, congratulations . You have installed OpenCV-Python successfully.
Building OpenCV from source¶
Download and install Visual Studio and CMake.
Download and install necessary Python packages to their default locations
2.3. Matplotlib (Matplotlib is optional, but recommended since we use it a lot in our tutorials.)
In this case, we are using 32-bit binaries of Python packages. But if you want to use OpenCV for x64, 64-bit binaries of Python packages are to be installed. Problem is that, there is no official 64-bit binaries of Numpy. You have to build it on your own. For that, you have to use the same compiler used to build Python. When you start Python IDLE, it shows the compiler details. You can get more information here. So your system must have the same Visual Studio version and build Numpy from source.
Another method to have 64-bit Python packages is to use ready-made Python distributions from third-parties like Anaconda, Enthought etc. It will be bigger in size, but will have everything you need. Everything in a single shell. You can also download 32-bit versions also.
Make sure Python and Numpy are working fine.
Download OpenCV source. It can be from Sourceforge (for official release version) or from Github (for latest source).
Extract it to a folder, opencv and create a new folder build in it.
Open CMake-gui (Start > All Programs > CMake-gui)
Fill the fields as follows (see the image below):
7.1. Click on Browse Source. and locate the opencv folder.
7.2. Click on Browse Build. and locate the build folder we created.
7.3. Click on Configure.
7.4. It will open a new window to select the compiler. Choose appropriate compiler (here, Visual Studio 11) and click Finish.
7.5. Wait until analysis is finished.
You will see all the fields are marked in red. Click on the WITH field to expand it. It decides what extra features you need. So mark appropriate fields. See the below image:
Now click on BUILD field to expand it. First few fields configure the build method. See the below image:
Remaining fields specify what modules are to be built. Since GPU modules are not yet supported by OpenCV-Python, you can completely avoid it to save time (But if you work with them, keep it there). See the image below:
Now click on ENABLE field to expand it. Make sure ENABLE_SOLUTION_FOLDERS is unchecked (Solution folders are not supported by Visual Studio Express edition). See the image below:
Also make sure that in the PYTHON field, everything is filled. (Ignore PYTHON_DEBUG_LIBRARY). See image below:
Finally click the Generate button.
Now go to our opencv/build folder. There you will find OpenCV.sln file. Open it with Visual Studio.
Check build mode as Release instead of Debug.
In the solution explorer, right-click on the Solution (or ALL_BUILD) and build it. It will take some time to finish.
Again, right-click on INSTALL and build it. Now OpenCV-Python will be installed.
Open Python IDLE and enter import cv2 . If no error, it is installed correctly.
We have installed with no other support like TBB, Eigen, Qt, Documentation etc. It would be difficult to explain it here. A more detailed video will be added soon or you can just hack around.
Начало работы с OpenCV: установка OpenCV в Windows + смешивание образов
Дата публикации Aug 30, 2018
Этот краткий учебник содержит инструкции для:
- Установка Anaconda для Windows
- Установка Jupyter Notebook, OpenCV и других пакетов
- Реализация смешивания изображений с использованием OpenCV
1. Загрузка и настройка Anaconda
Основное преимущество Anaconda Distribution заключается в том, что он делает установку и обслуживание пакетов удобной и быстрой; Кроме того, он также содержит более 150 пакетов, которые устанавливаются автоматически.
Прежде чем продолжить этот урок, убедитесь, что ваша система имеет / имеет следующее, чтобы убедиться, что Anaconda Distribution может быть установлен: Windows, macOS или Linux x86 или POWER8, 32- или 64-битные, 3 ГБ HD доступны.
Перейдите кhttps://www.anaconda.com/download/нажмите на опцию Windows и загрузитеPython 3.6версия для Windows. Если у вас есть 64-разрядный компьютер, щелкните 64-разрядный графический установщик (631 МБ); если у вас 32-битный компьютер, щелкните 32-битный графический установщик.
Откройте только что загруженный файл .exe и нажмите «Далее» в графическом интерфейсе «Welcome to Anaconda3», чтобы продолжить настройку. Согласитесь с лицензионным соглашением, выберите предпочитаемый тип установки (рекомендуется вариант «Просто я») и выберите папку назначения. Я рекомендую использовать путь к каталогу «C: \ Users \ User_Name \ Anaconda3», поскольку он упрощает доступ и доступ других пакетов / библиотек к Anaconda. Следовательно, на странице «Дополнительные параметры» зарегистрируйте Anaconda в качестве Python 3.6 по умолчанию; этот шаг предполагает, что вы не установили Python в вашей системе раньше. Теперь вы сможете установить Anaconda в своей системе.
2. Установка необходимых пакетов (включая Jupyter Notebook и OpenCV)
После установки Anaconda найдите и откройте приглашение Anaconda в своей системе.
Вам нужно будет создать среду, в которой вы сможете устанавливать необходимые пакеты и работать с OpenCV. Вы можете сделать это, введя следующую команду в Anaconda Prompt; Вы можете заменитьокрс именем среды по вашему выбору:
conda create -n env pip python=3.6
После этого шага Anaconda Prompt отобразит набор пакетов, которые необходимо загрузить, извлечь и установить; чтобы продолжить установку, нажмитеYключ на клавиатуре.
Затем вам нужно будет активировать среду, набрав:
conda activate env
Вам нужно будет активировать среду с помощью приведенной выше команды каждый раз, когда вы захотите использовать пакеты, установленные для этого учебника, включая Jupyter Notebook и OpenCV.
В этом руководстве я буду использовать Jupyter Notebook, веб-приложение с открытым исходным кодом, которое позволяет пользователям создавать документы, содержащие живой код и визуализации, а также многие другие преимущества. Вы также можете запустить код этого руководства с помощью IDE Spyder или IDE по вашему выбору.
Вам нужно будет установить Jupyter Notebook с помощью следующей команды:
pip install jupyter notebook
Вам также нужно будет установить matplotlib (это часто используемая библиотека для построения графиков Python) с помощью следующей команды:
pip install matplotlib
Теперь давайте установим OpenCV, что означает Open Source Computer Vision Library; Целью библиотеки является поддержка приложений компьютерного зрения в режиме реального времени. Мы можем выполнить установку с помощью команды:
pip install opencv-python
Обратите внимание: если вы хотите иметь возможность манипулировать / использовать JPEG с OpenCV (специально для задачи смешивания изображений), вам необходимо установить библиотеку Pillow, которая дает нам возможность открывать, манипулировать и сохранять множество различных форматов файлов изображений. с помощью команды:
pip install pillow
Начальное тестирование: ознакомление с ноутбуком Jupyter
Вы можете открыть Jupyter Notebook в веб-браузере по умолчанию, введя следующую команду в Anaconda Prompt:
На панели инструментов ноутбука (в веб-браузере, где открыт ноутбук) нажмите кнопку «Создать» и выберите ноутбук Python 3. Примечание. Если вы хотите увидеть полный код вместе с результатами, перейдите по этой ссылке:https://github.com/riacheruvu/DemystifyMLCode/blob/master/OpenCV_Example/OpenCV_Example.ipynb, Вы также можете скачать zip-файл главного репозитория для этого блога по адресуhttps://github.com/riacheruvu/DemystifyMLCodeИзвлеките содержимое zip-файла, перейдите в папку OpenCV_Example, а затем загрузите файл .ipynb и изображения в Блокнот Jupyter, чтобы следовать и запустить код.
Если вы используете новую записную книжку Python 3: Вы можете проверить правильность установки, введя print(«Hello, world») или 5+5 в одной из «ячеек кода» или пустых полей в блокноте, а затем нажмите кнопку «Выполнить». Если вы ранее программировали на Python, вы заметите, что вы можете получить выходные данные уравнения, такие как 5 + 5, без необходимости использовать оператор print () Посмотрите на документацию Jupyter Notebook (https://jupyter-notebook.readthedocs.io/en/stable/) если вы хотите узнать больше.
Для того, чтобы сделать быстрый тест, еслиNumPyустановив пакет, введите следующую строку в одну из ячеек, чтобы создать пустой массив, назначить его переменной и напечатать тип переменной:
Тип a должно быть ,
Начало работы с OpenCV: смешивание изображений
Чтобы начать работу и проверить правильность установки OpenCV, давайте реализуем смешивание изображений, которое включает в себя выполнение арифметических операций с изображениями и позволяет нам выполнять временное перекрестное растворение, сродни спецэффектам, распространенным в фильмах, слайд-шоу фотографий и т. Д.
Сначала нам нужно импортировать необходимые пакеты; в Python комментарии обозначаются символом #, за которым следует текст.
Если на этом этапе возникнут какие-либо проблемы, вернитесь и проверьте, правильно ли вы установили пакеты. Если у вас есть какие-либо вопросы по установке пакета, поделитесь ими в комментариях ниже.
Затем загрузите два изображения на ваш выбор из Интернета (вы можете использовать формат файлов .JPG или .PNG для изображений для этого урока). Для этого примера я использую следующие фотографииИосия ВайснаUnsplashа такжеГюль КуртараннаUnsplash, Вы можете скачать файлы изображений .JPG по ссылкам, представленным ниже, или щелкнуть правой кнопкой мыши изображения в этом сообщении и сохранить их.Убедитесь, что фотографии находятся в том же каталоге, что и файл блокнота, с которым вы работаете.
После загрузки картинок следующим шагом будет считывание картинок из имени файла. Для этого шага мы будем использовать matplotlibimage.imreadфункция, которая считывает изображение из файла в массив Numpy, как указано в документации этой функции (https://matplotlib.org/api/image_api.html). Массивы, выводимые из каждого изображения, должны иметь одинаковый размер / размеры; в противном случае мы получим сообщение об ошибке:
Мы можем избежать этой ошибки, изменив размеры обоих изображений, чтобы они имели одинаковую высоту и ширину (300, 300) с помощью команды cv2.resize; Вы можете изменить значения высоты и ширины, если вы хотите экспериментировать. Затем, используя matplotlib, мы можем построить изображение, дать ему название и отобразить его в блокноте.
OpenCV дает нам возможность легко смешивать эти изображения (аналогично добавлению изображений) с помощью функции cv2.addWeighted, которая применяет к изображению следующее уравнение, как описано вСтатья «Арифметические операции над изображениями», расположенная в документации OpenCV 3.0.0-dev:
Числа, следующие за именем каждого изображения в следующей строке кода для функции cv2.addWeighted, являются весами (определенными как в приведенном выше уравнении), которые можно варьировать от 0 до 1, чтобы смешивать изображения и делать их более / менее. прозрачный. Например, ниже я использую вес 0,5 для изображения воды и вес 0,6 для изображения женщины, едущей на лошади. В качестве быстрого упражнения попробуйте поэкспериментировать с весами для строки кода addWeighted, чтобы увидеть изменения в перекрестном растворении. Дополнительный 0 в конце строки кода представляет собой гамму или, которую мы установим в ноль для целей этого урока.
Отображение смешанного изображения приводит к следующему потрясающему результату:
Это завершает учебник; Спасибо за чтение! Если у вас есть какие-либо отзывы или вопросы, пожалуйста, поделитесь ими в комментариях ниже.