как установить opencv python на windows
Библиотека OpenCV с Python
В этом руководстве мы узнаем, как использовать библиотеку OpenCV в Python. OpenCV – это библиотека с открытым исходным кодом, которая поддерживается несколькими платформами, включая Windows, Linux и MacOS, а также доступна для использования на нескольких других языках. Однако он чаще всего используется в Python для приложений машинного обучения, особенно в области компьютерного зрения.
Помимо кроссплатформенной поддержки и доступности на нескольких других компьютерных языках, что позволяет использовать разработанные на нем приложения в разных системах, OpenCV также, по сравнению с другими такими библиотеками, довольно эффективен с точки зрения вычислений, поскольку он использует вектор операций для большинства своих функций.
Рассмотрим установку OpenCV на Mac, Windows и Linux, операции с изображениями, арифметику изображений, сглаживание изображений и геометрические преобразования с использованием OpenCV.
Установка OpenCV в Python
Примечание. Поскольку мы собираемся использовать OpenCV на языке Python, неявно требуется, чтобы на вашей рабочей станции уже был установлен Python (версия 3). В зависимости от вашей ОС выполните одну из следующих команд, чтобы установить библиотеку OpenCV в вашей системе:
Windows
MacOS
Linux
Чтобы проверить, была ли ваша установка успешной, выполните следующую команду либо в оболочке Python, либо в командной строке или терминале:
Если вы не получаете сообщение об ошибке при импорте cv2, значит, он был установлен правильно.
Основные операции с изображениями
Теперь, когда мы установили OpenCV на наши рабочие станции, давайте займемся некоторыми функциями, которые предлагает OpenCV.
Отображение изображения
Отображение изображения с помощью OpenCV – это двухэтапный процесс. Сначала мы должны его загрузить, а затем отобразить. Обе операции выполняются последовательно с использованием разных функций.
Для чтения или загрузки изображения мы будем использовать функцию cv2.imread(), имеющую два варианта. Первый – IMREAD_GRAYSCALE, который, как следует из названия, преобразует изображение в оттенки серого перед его чтением. Второй – IMREAD_UNCHANGED, который загружает изображение без вырезания альфа-канала. По умолчанию IMREAD_COLOR просто считывает цветное изображение, используя только каналы RGB.
Приведем пример кода:
Это загрузит изображение велосипеда из файловой системы и сохранит его в переменной my_bike для дальнейших операций.
Примечание. Если вы получили сообщение об ошибке из приведенного выше кода, это может быть вызвано только тремя причинами. Во-первых, вы указали неверный путь, во-вторых, указанный вами файл изображения не существует, а во-вторых, что тип изображения (jpg, jpeg и png) в пути к изображению неверен.
Теперь давайте отобразим только что прочитанное изображение. Это можно сделать с помощью функции cv2.imshow().
Первый параметр функции imshow() – это имя строки, которую вы хотите отобразить в окне изображения. Второй параметр – это обработчик изображения, который мы создали с помощью функции cv2.imread().
Сохранение
Сохранение изображения – очень часто используемая функция, так как нам может потребоваться обновить изображение и сохранить изменения в файловой системе для дальнейшего использования. OpenCV имеет функцию cv2.imwrite() для сохранения изображений.
Здесь мы указываем имя и текущее местоположение изображения. Полученное изображение автоматически сохраняется в текущем рабочем каталоге.
Арифметические операции
Арифметические операции с изображениями относятся к сложению, вычитанию, умножению или делению нескольких изображений для создания нового изображения, которое представляет собой арифметическую комбинацию входных изображений. Арифметика изображений имеет множество применений, таких как добавление водяного знака к изображению, создание смешанной комбинации двух изображений, применение различных типов фильтров изображений и т.д.
Хотя существует множество операций, которые вы можете выполнять, мы покажем здесь только два примера, так как это позволит вам применить концепцию к другим арифметическим операциям, доступным в OpenCV. Первым примером будет добавление двух изображений, а вторым примером будет смешивание двух изображений.
Давайте закодируем эти два примера:
Добавление
Команда waitKey будет ждать, пока вы нажмете клавишу, прежде чем она перейдет к следующей команде. Это полезно для того, чтобы программа продолжала отображать ваше изображение до тех пор, пока не будет нажата клавиша, в противном случае оно будет отображаться на долю секунды, а затем быстро исчезнет после того, как программа прекратит выполнение.
Смешивание
Смешивание изображений аналогично добавлению изображений, за исключением того, что можно управлять вкладом каждого изображения в новое результирующее изображение. По сути, если мы хотим, чтобы одно изображение было более сфокусированным, а другое – более тусклым при объединении, мы будем использовать смешивание, а не простое добавление.
Давайте закодируем это, чтобы прояснить дальше:
Сумма весов, присвоенных функции addWeighted, должна быть равна 1.0. Вы также можете указать в конце скалярное значение, которое будет добавлено ко всем значениям пикселей полученного изображения.
Примечание: изображения могут быть любого типа, однако он должен быть одинаковым для всех изображений. Например, если вы используете формат PNG, все изображения, используемые для вычислений, также должны быть в формате PNG.
Сглаживание
Сглаживание изображений – очень полезная функция, которая в основном выполняется перед передачей изображений в модель машинного обучения. В основном это делается для удаления шумовых и высокочастотных элементов из изображений путем пропускания изображения через фильтр нижних частот. Существует множество фильтров, в том числе прямоугольный фильтр (усредняющий фильтр), медианный фильтр, модовый фильтр, фильтр Гаусса и многие другие. Однако, чтобы понять сглаживание изображения и то, как это сделать с помощью OpenCV, мы рассмотрим только блочный фильтр.
Допустим, у вас есть изображение размером 10×10, и вы хотите пропустить его через фильтр 3×3 или усредняющий, как бы вы это сделали?
Вы начнете с верхнего левого угла изображения, поместите туда свой фильтр 3×3 и замените центральный элемент средним значением всех 9 элементов. Это был первый шаг, теперь вы переместите свой фильтр на один шаг вправо и повторите тот же процесс, пока не покроете все изображение. Ниже для справки приведены примеры изображения 10×10 и усредняющего фильтра 3×3:
Фильтр применяется к изображению 10×10:
Теперь, когда мы обсудили, как это работает, давайте попробуем и посмотрим, как мы можем применять различные фильтры к нашему изображению с помощью OpenCV. Внимательно прочтите комментарии, чтобы узнать, какая строка кода используется для какого фильтра:
Примечание. Вы можете просмотреть полученные изображения, используя следующий дополнительный код:
Преобразование изображений
Это последняя, но одна из самых важных тем, которые мы собираемся затронуть с помощью OpenCV. У него много приложений, но одно из самых распространенных в настоящее время – машинное обучение для увеличения данных, то есть, когда у вас нехватка набора данных, вы увеличиваете и трансформируете доступные в настоящее время изображения, чтобы сделать их отличными от вашего существующего набора данных. Это эффективно увеличивает размер вашего набора данных и может помочь в повышении точности вашей модели.
Список возможных преобразований длинный, включая масштабирование, аффинность, вращение, перевод и т.д. мы рассмотрим только два из них, используя OpenCV, чтобы получить общее представление. Однако OpenCV предоставляет вспомогательные функции для широкого их круга. Начнем с масштабирования.
Масштабирование
Проще говоря, масштабирование – это просто изменение размера вашего изображения, то есть его увеличение или уменьшение. resize – это функция, используемая для масштабирования изображений в OpenCV. У изменения размера есть три типа: INTER_CUBIC, INTER_LINEAR и INTER_AREA. Давайте закодируем пример, использующий эти функции для масштабирования. Пожалуйста, внимательно прочтите код, комментарии и описания, поскольку они объяснят, что именно происходит в коде:
Здесь, в функции изменения размера, параметр fx in представляет масштабный коэффициент для ширины, fy представляет масштабный коэффициент по высоте, а интерполяция определяет функцию, которая будет использоваться для масштабирования (сжатие или расширение).
Вращение
Вращение позволяет нам перемещать изображение вокруг оси на определенный заданный угол.
Прежде чем мы узнаем, как вращать наши изображения с помощью кода, мы должны знать, что существует матрица вращения, которая используется для выполнения этого преобразования. Мы не будем вдаваться в подробности этого, поскольку OpenCV позволяет нам очень просто вычислить эту матрицу с помощью одного вызова функции. Вы увидите это в приведенном ниже коде:
В функции getRotationMatrix2D 180 указывает степень поворота изображения, 1 – коэффициент масштабирования, вызов функции вернет матрицу поворота в переменной matrix.
Вызов функции warpAffine использует матрицу, которую мы вычислили из предыдущего метода, для поворота изображения в соответствии с нашими требованиями.
Заключение
В заключение давайте еще раз подчеркнем некоторые важные моменты, которые мы обсуждали в этой статье. OpenCV – это библиотека, доступная на нескольких языках, которая в основном используется вместе с NumPy, SciPy и Matplotlib, как мы видели в некоторых из приведенных выше примеров. Некоторые из его функций такие же, как в Matlab, и он также поддерживает векторизованные операции, что увеличивает вычислительную эффективность.
Кроме того, OpenCV – одна из лучших библиотек для области компьютерного зрения, и после прочтения этой статьи вы сможете продолжить поиск некоторых приложений компьютерного зрения и обучения, которые были разработаны с использованием OpenCV.
Как установить OpenCV в виртуальную среду Python
В этой статье я покажу, как установить я библиотеки OpenCV в виртуальную среду Python. Я опишу следующие этапы установки:
Все было протестировано на планшете Microsoft Surface, Windows 10 Pro, c 64-битной операционной системой.
Установка OpenCV в виртуальную среду Python
Предположим, что на вашем устройстве ничего не установлено.
Установка Python
Установка virtualenv
Виртуальная среда нам нужна для того, чтобы для каждого отдельного проекта была своя «комната» со своими версиями установленных библиотек, которые не будут зависеть от других проектов и путаться между собой.
Обновили pip, теперь установим виртуальную среду:
pip install virtualenv
Командой cd перейдите в папку, в которой хотите создать среду и введите команду:
mkdir opencvtutorial_env — так мы создали среду с названием opencvtutorial_env.
Далее вводим команду virtualenv opencvtutorial_env и для активации перейдите в папку среды и далее с помощью Tab до activate.
.\opencvtutorial_env\Scripts\activate
Установка библиотек OpenCV-Python, Numpy и Matplotlib
Они понадобятся для тестирования функций opencv.
Самый легкий и быстрый вариант установки у меня получился с неофициальной версии. Устанавливаем его командой:
pip install opencv-python
Тестирование
Теперь осталось проверить все ли у нас работает. В открывшемся окне создаем новый Python 3 файл, и запускаем команду:
import cv2 as cv
print( cv.__version__ )
Если выходит версия opencv, то поздравляю, можно тестировать туториалы c официального сайта. Мои примеры работ по туториалам можно найти здесь.
Заключение
Надеюсь эта статья вам помогла установить OpenCV в виртуальную среду Python. Вот еще несколько статей касаемо OpenCV:
Установка OpenCV + CUDA на Windows
Введение
В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.
Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.
Сборка тестировалась для:
Что потребуется для установки
В моей сборке использовались следующие инструменты:
Установка
Так как установка производится через консольные команды, то следует внимательно и аккуратно выполнять все шаги. Также, при необходимости, меняйте установочные пути на свои.
Для начала необходимо установить требуемое ПО, причем Visual Studio должна быть установлена до CUDA:
Далее загружаем архивы исходников opencv-4.1.1 и opencv-contrib-4.1.1 в желаемое место (в моем случае это C:\OpenCV\).
Создаем папку build/ внутри opencv-4.1.1.
Далее сгенерируем файлы сборки с помощью cmake. Мы будем использовать консольный вариант cmake, так как cmake-gui путает типы некоторых переменных (например, OPENCV_PYTHON3_VERSION) и, как следствие, неправильно генерирует файлы.
Открываем консоль по пути C:\OpenCV\ и прописываем переменные.
Примечание. Для Visual Studio 2017 генератор пишется как «Visual Studio 15 2017 Win64» и без флага -A.
Также можно явно указать питоновские библиотеки для python 2 и python 3 на случай, если сборщик не сможет найти их автоматически.
Примечание. Обратите внимание на то, что библиотека NumPy должна быть той же разрядности, что и OpenCV. Проверить это легко:
Выполняем генерацию файлов сборки с помощью длинной команды ниже. При неудачной генерации или наличии ошибок после выполнения команды, повторную генерацию следует производить вычистив все файлы в build/ и .cache/.
Спустя примерно 10 минут в консоле должна появиться информация о сборке и завершающие строки «Configuring done» и «Generating done». Проверяем всю информацию, особенно разделы NVIDIA CUDA, Python 2, Python 3.
Далее собираем решение. На сборку может уйти несколько часов в зависимости от вашего процессора и версии Visual Studio.
После успешной установки создаем системную переменную OPENCV_DIR со значением C:\OpenCV\opencv-4.1.1\build\install\x64\vc15\bin и также добавляем ее в PATH.
Проверим работоспособность OpenCV с модулем CUDA на простом примере умножения матриц.
Пример на Python 3
Удаление
Чтобы удалить OpenCV, нужно выполнить команду.
и удалить системную переменную OPENCV_DIR и убрать путь до OpenCV из PATH.
Заключение
В статье мы рассмотрели установку OpenCV 4 для ОС Windows 10. Данный алгоритм тестировался на Windows 8.1 и Windows 10, но, в теории, может собираться и на Windows 7. За дополнительной информацией можно обратиться к списку источников ниже.
OpenCV в Python. Часть 1
Привет, Хабр! Запускаю цикл статей по библиотеке OpenCV в Python. Кому интересно, добро пожаловать под кат!
Введение
OpenCV — это open source библиотека компьютерного зрения, которая предназначена для анализа, классификации и обработки изображений. Широко используется в таких языках как C, C++, Python и Java.
Установка
Будем считать, что Python и библиотека OpenCV у вас уже установлены, если нет, то вот инструкция для установки python на windows и на ubuntu, установка OpenCV на windows и на ubuntu.
Немного про пиксели и цветовые пространства
Перед тем как перейти к практике, нам нужно разобраться немного с теорией. Каждое изображение состоит из набора пикселей. Пиксель — это строительный блок изображения. Если представить изображение в виде сетки, то каждый квадрат в сетке содержит один пиксель, где точке с координатой ( 0, 0 ) соответствует верхний левый угол изображения. К примеру, представим, что у нас есть изображение с разрешением 400×300 пикселей. Это означает, что наша сетка состоит из 400 строк и 300 столбцов. В совокупности в нашем изображении есть 400*300 = 120000 пикселей.
В большинстве изображений пиксели представлены двумя способами: в оттенках серого и в цветовом пространстве RGB. В изображениях в оттенках серого каждый пиксель имеет значение между 0 и 255, где 0 соответствует чёрному, а 255 соответствует белому. А значения между 0 и 255 принимают различные оттенки серого, где значения ближе к 0 более тёмные, а значения ближе к 255 более светлые:
Цветные пиксели обычно представлены в цветовом пространстве RGB(red, green, blue — красный, зелёный, синий), где одно значение для красной компоненты, одно для зелёной и одно для синей. Каждая из трёх компонент представлена целым числом в диапазоне от 0 до 255 включительно, которое указывает как «много» цвета содержится. Исходя из того, что каждая компонента представлена в диапазоне [0,255], то для того, чтобы представить насыщенность каждого цвета, нам будет достаточно 8-битного целого беззнакового числа. Затем мы объединяем значения всех трёх компонент в кортеж вида (красный, зеленый, синий). К примеру, чтобы получить белый цвет, каждая из компонент должна равняться 255: (255, 255, 255). Тогда, чтобы получить чёрный цвет, каждая из компонент должна быть равной 0: (0, 0, 0). Ниже приведены распространённые цвета, представленные в виде RGB кортежей:
Импорт библиотеки OpenCV
Теперь перейдём к практической части. Первое, что нам необходимо сделать — это импортировать библиотеку. Есть несколько путей импорта, самый распространённый — это использовать выражение:
Также можно встретить следующую конструкцию для импорта данной библиотеки:
Загрузка, отображение и сохранение изображения
Для загрузки изображения мы используем функцию cv2.imread(), где первым аргументом указывается путь к изображению, а вторым аргументом, который является необязательным, мы указываем, в каком цветовом пространстве мы хотим считать наше изображение. Чтобы считать изображение в RGB — cv2.IMREAD_COLOR, в оттенках серого — cv2.IMREAD_GRAYSCALE. По умолчанию данный аргумент принимает значение cv2.IMREAD_COLOR. Данная функция возвращает 2D (для изображения в оттенках серого) либо 3D (для цветного изображения) массив NumPy. Форма массива для цветного изображения: высота x ширина x 3, где 3 — это байты, по одному байту на каждую из компонент. В изображениях в оттенках серого всё немного проще: высота x ширина.
С помощью функции cv2.imshow() мы отображаем изображение на нашем экране. В качестве первого аргумента мы передаём функции название нашего окна, а вторым аргументом изображение, которое мы загрузили с диска, однако, если мы далее не укажем функцию cv2.waitKey(), то изображение моментально закроется. Данная функция останавливает выполнение программы до нажатия клавиши, которую нужно передать первым аргументом. Для того, чтобы любая клавиша была засчитана передаётся 0. Слева представлено изображение в оттенках серого, а справа в формате RGB:
И, наконец, с помощью функции cv2.imwrite() записываем изображение в файл в формате jpg(данная библиотека поддерживает все популярные форматы изображений:png, tiff,jpeg,bmp и т. д., поэтому можно было сохранить наше изображение в любом из этих форматов), где первым аргументом передаётся непосредственно само название и расширение, а следующим параметром изображение, которое мы хотим сохранить.
Доступ к пикселям и манипулирование ими
Для того, чтобы узнать высоту, ширину и количество каналов у изображения можно использовать атрибут shape:
Важно помнить, что у изображений в оттенках серого img.shape[2] будет недоступно, так как данные изображения представлены в виде 2D массива.
Чтобы получить доступ к значению пикселя, нам просто нужно указать координаты x и y пикселя, который нас интересует. Также важно помнить, что библиотека OpenCV хранит каналы формата RGB в обратном порядке, в то время как мы думаем в терминах красного, зеленого и синего, то OpenCV хранит их в порядке синего, зеленого и красного цветов:
Cначала мы берём пиксель, который расположен в точке (0,0). Данный пиксель, да и любой другой пиксель, представлены в виде кортежа. Заметьте, что название переменных расположены в порядке b, g и r. В следующей строке выводим значение каждого канала на экран. Как можно увидеть, доступ к значениям пикселей довольно прост, также просто можно и манипулировать значениями пикселей:
В первой строке мы устанавливаем значение пикселя (0, 0) равным (255, 0, 0), затем мы снова берём значение данного пикселя и выводим его на экран, в результате мне на консоль вывелось следующее:
На этом у нас конец первой части. Если вдруг кому-то нужен исходный код и картинка, то вот ссылка на github. Всем спасибо за внимание!
Как установить OpenCV для Python в Windows?
OpenCV — это огромная библиотека с открытым исходным кодом для компьютерного зрения, машинного обучения и обработки изображений, и теперь она играет важную роль в работе в реальном времени, что очень важно в современных системах. С его помощью можно обрабатывать изображения и видео для идентификации объектов, лиц или даже почерка человека. При интеграции с различными библиотеками, такими как Numpuy, python может обрабатывать структуру массива OpenCV для анализа. Чтобы идентифицировать шаблоны изображения и его различные функции, мы используем векторное пространство и выполняем математические операции с этими элементами.
Для установки OpenCV в системе должны быть предварительно установлены Python и PIP. Чтобы проверить, есть ли в вашей системе Python, выполните следующие инструкции:
Откройте командную строку (найдите cmd в диалоговом окне «Выполнить» (win + R).
Теперь выполните следующую команду:
Если Python уже установлен, он выдаст сообщение с доступной версией Python.
PIP — это система управления пакетами, используемая для установки и управления программными пакетами / библиотеками, написанными на Python. Эти файлы хранятся в большом «онлайн репозитории», называемом индексом пакета Python (PyPI).
Чтобы проверить, установлен ли PIP в вашей системе, просто перейдите в командную строку и выполните следующую команду:
Скачивание и установка OpenCV:
OpenCV можно напрямую загрузить и установить с помощью pip (диспетчера пакетов). Чтобы установить OpenCV, просто перейдите в командную строку и введите следующую команду:
Чтобы проверить, правильно ли установлен OpenCV, просто выполните следующие команды для проверки версии: