# Основы компьютерного зрения и OpenCV

&#x20;OpenCV (Open Source Computer Vision Library: <http://opencv.org>) – набор библиотек с открытым исходным кодом, распространяемый по лицензии BSD, в который включены сотни алгоритмов компьютерного зрения.

<https://docs.opencv.org/3.4.1/d1/dfb/intro.html>

### Установка OpenCV на Raspberry PI

<http://robotclass.ru/articles/raspberrypi-3-opencv-3-install/>\
<http://www.ekzorchik.ru/2017/09/how-to-install-opencv-on-raspberry-pi-3-model-b-jessie/>

Установка библиотек OpenCV – из исходных кодов -длительный процесс, он поэтапно описан ниже в этой главе.\
Первым делом нужно обновить стандартный набор пакетов и перезагрузить Raspberry:

```
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
```

Установка инструментов для разработки:

```
sudo apt-get update
```

&#x20;Установка инструментов для разработки:

```
sudo apt-get install build-essential git cmake pkg-config
```

Установка пакетов для обработки изображений в формате JPEG, PNG, TIFF и инструментов обработки видеопотока:

```
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
```

Установка библиотеки GTK, для возможности отображения картинок на экране и построения GUI интерфейсов:

```
sudo apt-get install libgtk2.0-dev
```

Инструменты для ускорения вычислений (операций над матрицами и т.п.):

```
sudo apt-get install libatlas-base-dev gfortran
```

Заголовочные файлы для работы с языком Python:

```
sudo apt-get install python2.7-dev python3-dev
```

Далее нужно получить из интернет исходный код библиотек OpenCV (Raspberry PI должен быть подключен к Интернет для этого). В нашем примере мы получаем версию библиотек 3.0.0. По мере выхода новых релизов OpenCV номер 3.0.0 следует заменить на соответствующий:

```
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.0.0.zip
unzip opencv.zip
```

Для полной установки также можно установить дополнительные библиотеки OpenCV. Убедитесь, что версии самой OpenCV и библиотек совпадают (в нашем примере – 3.0.0):

```
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.0.0.zip
unzip opencv_contrib.zip
```

Установим менеджер пакетов для Python - pip:

```
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
```

Подготовка к сборке OpenCV из исходных кодов:

```
cd ~/opencv-3.0.0/
mkdir 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_EXTRA_MODULES_PATH=~/opencv_contrib-3.0.0/modules \
 -D BUILD_EXAMPLES=ON ..
```

**Нужно проверить вывод команды cmake, для Python 2 и 3 он должен выглядеть примерно так:**

![](/files/-M286VoaXzRGTlnnFN3y)

\
&#x20;Компилируем OpenCV:

```
make -j4
```

{% hint style="success" %}

&#x20;Ключ -j4 означает использовать при компиляции все 4 ядра. При компиляции Raspberry может зависнуть, если это происходит – можно компилировать, используя одно ядро.
{% endhint %}

&#x20;Это займёт больше времени, но позволит избежать ошибок, связанных с параллельной обработкой:

```
make clean
make
```

После успешного завершения компиляции – последний шаг – установка OpenCV:

```
sudo make install
sudo ldconfig
```

&#x20;Если команды выполнились без ошибок – установка OpenCV завершена успешно. После установки можно проверить работу OpenCV с помощью Python:

```
python
 >>> import cv2
 >>> cv2.__version__
 '3.0.0'
```

![](/files/-M287KhWr5aM-GMoqTGV)

&#x20;Если команда выдала версию OpenCV – установка завершена успешно и можно приступать к разработке программ под OpenCV на Python.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://copter-space.gitbook.io/uchebnik-mashinnoe-zrenie-tom-2/razdel-3/osnovy-kompyuternogo-zreniya-i-opencv.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
