- Установить opencv на линукс
- Required Packages
- Getting OpenCV Source Code
- Getting the Latest Stable OpenCV Version
- Getting the Cutting-edge OpenCV from the Git Repository
- Building OpenCV from Source Using CMake
- OpenCV: Установка и использование под Linux
- Установка OpenCV под Linux
- Шаг 1: Получаем исходные коды OpenCV из Git
- Шаг 2: Подготавливаем OpenCV к сборке
- Шаг 3: Собираем и устанавливаем OpenCV
- Разработка Qt-проекта с использованием OpenCV
- Как установить OpenCV в Ubuntu 20.04
- Установка OpenCV из репозитория Ubuntu
- Установка OpenCV из исходного кода
- Выводы
Установить opencv на линукс
The following steps have been tested for Ubuntu 10.04 but should work with other distros as well.
Required Packages
- GCC 4.4.x or later
- CMake 2.8.7 or higher
- Git
- GTK+2.x or higher, including headers (libgtk2.0-dev)
- pkg-config
- Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
- ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
- [optional] libtbb2 libtbb-dev
- [optional] libdc1394 2.x
- [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
- [optional] CUDA Toolkit 6.5 or higher
The packages can be installed using a terminal and the following commands or by using Synaptic Manager:
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
Getting OpenCV Source Code
You can use the latest stable OpenCV version or you can grab the latest snapshot from our Git repository.
Getting the Latest Stable OpenCV Version
Getting the Cutting-edge OpenCV from the Git Repository
Launch Git client and clone OpenCV repository. If you need modules from OpenCV contrib repository then clone it as well.
Building OpenCV from Source Using CMake
- Create a temporary directory, which we denote as , where you want to put the generated Makefiles, project files as well the object files and output binaries and enter there. For example
- set full path to OpenCV source code, e.g. /home/user/opencv
- set full path to , e.g. /home/user/opencv/build
- set optional parameters
- run: “Configure”
- run: “Generate”
- build type: CMAKE_BUILD_TYPE=Release\Debug
- to build with modules from opencv_contrib set OPENCV_EXTRA_MODULES_PATH to
- set BUILD_DOCS for building documents
- set BUILD_EXAMPLES to build all examples
- PYTHON2(3)_EXECUTABLE =
- PYTHON_INCLUDE_DIR = /usr/include/python
- PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python
- PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython.so
- PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python/dist-packages/numpy/core/include/
- Unset parameter: BUILD_SHARED_LIBS
- It is useful also to unset BUILD_EXAMPLES, BUILD_TESTS, BUILD_PERF_TESTS — as they all will be statically linked with OpenCV and can take a lot of memory.
OpenCV: Установка и использование под Linux
OpenCV — мощная и развитая библиотека компьютерного зрения с открытым исходным кодом. Если вам понадобилось решить какую-то задачу, связанную с нетривиальной обработкой изображений, то есть большая вероятность, что OpenCV уже предлагает готовое решение.
В этой статье мы соберем и установим OpenCV из исходных кодов под Linux, а затем разработаем тестовое приложение, способное находить лица на фотографии с помощью модуля CascadeClassifier :
Установка OpenCV под Linux
Прежде чем приступать к сборке OpenCV из исходных кодов, рекомендую проверить, что он не доступен в репозиториях вашего дистрибутива Linux. Например, в Archlinux библиотеку OpenCV можно установить следующей командой:
Однако даже в этом случае иногда есть смысл сделать сборку OpenCV самому. Основная причина для этого — так вы сможете получить самую последнюю версию как можно раньше (например, при добавлении новых возможностей или исправлении критических ошибок). Поэтому приступим к пошаговой инструкции по сборке OpenCV.
Шаг 1: Получаем исходные коды OpenCV из Git
mkdir cd git clone https://github.com/opencv/opencv.git
Шаг 2: Подготавливаем OpenCV к сборке
mkdir release # Предполагается, что мы в каталоге, куда был склонирован git-проект cd release cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX= ../
В качестве каталога установки я использую домашний каталог /home/michael/OpenCV/ .
Шаг 3: Собираем и устанавливаем OpenCV
make # Предполагается, что мы в каталоге release/ sudo make install # Если вы устанавливаете OpenCV, как и я, в домашний каталог, то sudo не нужно
Если все прошло без ошибок, то процесс сборки и установки OpenCV завершен. Теперь можно перейти в каталог, который мы указали в параметре CMAKE_INSTALL_PREFIX . Там вы должны увидеть примерно такой набор директорий:
drwx------ 6 michael michael 4,0K мар 31 08:44 ./ drwx------ 171 michael michael 12K мар 31 09:30 ../ drwx------ 2 michael michael 4,0K мар 31 08:44 bin/ drwx------ 4 michael michael 4,0K мар 31 08:44 include/ drwx------ 3 michael michael 4,0K мар 31 08:44 lib/ drwx------ 3 michael michael 4,0K мар 31 08:44 share/
Разработка Qt-проекта с использованием OpenCV
Начнем с подготовки pro -файла:
# … # Остальное нас сейчас не интересует INCLUDEPATH += LIBS += -L/ LIBS += -lopencv_core \ -lopencv_imgproc \ -lopencv_imgcodecs \ -lopencv_highgui \ -lopencv_objdetect
Для успешной работы с OpenCV в Qt-проекте нужно указать пути, где находятся заголовочные файлы и библиотеки. Например, если мы установили OpenCV в домашнем каталоге: ~/OpenCV , то:
INCLUDEPATH += $(HOME)/OpenCV/include/ LIBS += -L$(HOME)/OpenCV/lib/
Также не забываем подключать необходимые opencv -библиотеки:
LIBS += -lopencv_core \ -lopencv_imgproc \ -lopencv_imgcodecs \ -lopencv_highgui \ -lopencv_objdetect
Теперь переходим к файлу mainwidget.h :
#ifndef MAINWIDGET_H #define MAINWIDGET_H #include #include namespace Ui < class MainWidget; >class MainWidget : public QWidget < Q_OBJECT public: explicit MainWidget( QWidget* parent = 0 ); ~MainWidget(); private slots: void onLoadImage(); private: Ui::MainWidget* ui; cv::CascadeClassifier m_faceClassifier; >; #endif // MAINWIDGET_H
Мы лишь подготовили очень простой виджет, в котором одним из полей является объект класса OpenCV — cv::CascadeClassifier .
Реализация в mainwidget.cpp :
#include "mainwidget.h" #include "ui_mainwidget.h" #include #include #include #include MainWidget::MainWidget( QWidget* parent ) : QWidget( parent ), ui( new Ui::MainWidget ) < ui->setupUi( this ); m_faceClassifier.load( "haarcascade_frontalface_default.xml" ); connect( ui->bnOpen, SIGNAL( clicked( bool ) ), SLOT( onLoadImage() ) ); > MainWidget::~MainWidget() < delete ui; >void MainWidget::onLoadImage() < QString imgPath = QFileDialog::getOpenFileName( this, trUtf8( "Открыть" ), ".", trUtf8( "Изображения (*.jpg *.png *.bmp)" ) ); if( imgPath.isEmpty() ) < return; >cv::Mat img = cv::imread( imgPath.toStdString() ); cv::Mat gray; cv::cvtColor( img, gray, cv::COLOR_BGR2GRAY ); std::vector < cv::Rect >faces; m_faceClassifier.detectMultiScale( gray, faces ); QPixmap pix( imgPath ); QPainter painter; painter.begin( &pix ); painter.setPen( Qt::green ); foreach( const cv::Rect& r, faces ) < painter.drawRect( r.x, r.y, r.width, r.height ); >painter.end(); ui->lbView->setPixmap( pix.scaled( ui->lbView->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) ); >
Обратите внимание на строку:
m_faceClassifier.load( "haarcascade_frontalface_default.xml" );
Здесь мы загружаем классификатор haarcascade_frontalface_default.xml , обученный на распознавание лиц. Найти его можно в каталоге data/haarcascades/ , который расположен в склонированном гит-репозитории OpenCV. Обратите внимание, что этот xml -файл должен находиться в одном каталоге с исполняемым файлом для правильной работы приложения.
Следующий важный фрагмент:
cv::Mat img = cv::imread( imgPath.toStdString() ); cv::Mat gray; cv::cvtColor( img, gray, cv::COLOR_BGR2GRAY ); std::vector < cv::Rect >faces; m_faceClassifier.detectMultiScale( gray, faces );
В этом месте мы и выполняем непосредственное распознавание для загруженной фотографии. «Волшебство» происходит в этой строке:
m_faceClassifier.detectMultiScale( gray, faces );
На вход detectMultiScale() получает черно-белое изображение, а возвращает вектор с прямоугольниками, соответствующими всем найденным лицам.
Далее мы просто проходим по получившемуся вектору и помечаем все лица на фотографии зеленой рамкой:
QPixmap pix( imgPath ); QPainter painter; painter.begin( &pix ); painter.setPen( Qt::green ); foreach( const cv::Rect& r, faces ) < painter.drawRect( r.x, r.y, r.width, r.height ); >painter.end();
Если вы потестируете это приложение подольше, то увидите, что часто встречаются ложные срабатывания (лица находятся там, где их нет). Но решение этой проблемы уже выходит за рамки этой статьи и требует более аккуратного подхода.
Как установить OpenCV в Ubuntu 20.04
OpenCV (Open Source Computer Vision Library) — это библиотека компьютерного зрения с открытым исходным кодом с привязками для C ++, Python и Java, поддерживающая все основные операционные системы. Он может использовать преимущества многоядерной обработки и ускорения графического процессора для работы в реальном времени.
OpenCV используется для широкого спектра приложений, включая анализ медицинских изображений, сшивание изображений улиц, видеонаблюдение, обнаружение и распознавание лиц, отслеживание движущихся объектов, извлечение 3D-моделей и многое другое.
В этой статье описывается, как установить OpenCV в Ubuntu 20.04. Чтобы установить последнюю стабильную версию OpenCV из исходного кода, прокрутите вниз до раздела « Установка OpenCV из исходного кода » этого руководства. Выберите наиболее удобный для вас способ установки.
Установка OpenCV из репозитория Ubuntu
OpenCV доступен для установки из репозиториев Ubuntu 20.04 по умолчанию. Для его установки выполните:
sudo apt update
sudo apt install libopencv-dev python3-opencv
Приведенная выше команда установит все пакеты, необходимые для запуска OpenCV.
Проверьте установку, импортировав модуль cv2 и распечатав версию OpenCV:
python3 -c "import cv2; print(cv2.__version__)"
На момент написания в репозиториях стоит версия 4.2:
Установка OpenCV из исходного кода
Сборка библиотеки OpenCV из исходного кода позволяет получить самую последнюю доступную версию. Он будет оптимизирован для вашей конкретной системы, и вы получите полный контроль над параметрами сборки. Это рекомендуемый способ установки OpenCV.
Выполните следующие шаги, чтобы установить последнюю версию OpenCV из источника:
sudo apt install build-essential cmake git pkg-config libgtk-3-dev
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev
gfortran openexr libatlas-base-dev python3-dev python3-numpy
libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd ~/opencv_build/opencv
mkdir -p build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D INSTALL_C_EXAMPLES=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D OPENCV_GENERATE_PKGCONFIG=ON
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules
-D BUILD_EXAMPLES=ON ..
-- Configuring done -- Generating done -- Build files have been written to: /home/vagrant/opencv_build/opencv/build
pkg-config --modversion opencv4
python3 -c "import cv2; print(cv2.__version__)"
Выводы
Мы показали вам два разных способа установки OpenCV на ваш компьютер с Ubuntu 20.04. Выбор метода зависит от ваших требований и предпочтений. Несмотря на то, что установить упакованную версию из репозитория Ubuntu проще, сборка OpenCV из исходного кода дает вам больше гибкости, и это должно быть вашим первым вариантом при установке OpenCV.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.