OpenCV + Raspberry Pi: Como configurar o ambiente?
Tags: raspberrypi, opencv, machinelearning, deeplearning
Published: 2021-08-03 20:56:04

OpenCV (*Open Source Computer Vision*) é uma biblioteca multi-plataforma com um forte foco para o **processamento digital de imagens em tempo real**, escrita em C/C++ que hoje contém interfaces para diversas linguagens tais como Python e Java. Sua primeira versão foi lançada em 2000 e [...] conta com várias centenas de algoritmos de visão computacional o que torna esta biblioteca uma ferramenta poderosa no campo da **visão computacional** (BAGGIO, 2015).

Neste tutorial, há duas maneiras de realizar a instalação: a padrão e a específica. A forma padrão utiliza o próprio pacote *pip* do *Python*, já a específica possibilita a escolha da versão do OpenCV disponíveis no repositório do GitHub. 

Você precisará de um Raspberry Pi (o modelo utilizado foi o RPi 3 Model B V1.2), um cartão Micro SD, de mais de 8GB de armazenamento, com o sistema operacional Raspberry Pi OS instalado (confira a instalação [aqui](https://www.raspberrypi.org/software/)) e de uma xícara de café 😅.

# Método 1 - Instalação Padrão

Esse método é mais rápido e recomendado. Todos os comandos devem ser abertos no terminal e executados passo-a-passo.

### <br>Passo 1 - Atualize o sistema operacional
```Python
sudo apt-get update
sudo apt-get upgrade
```

### <br>Passo 2 - Instale as dependências necessárias
```Python
sudo apt-get install build-essential cmake pkg-config
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
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
```

### <br>Passo 3 - Instale o Python 3 e o Pip 3 (pacotes do Python)
```Python
sudo apt-get install python3-dev
sudo apt-get install python3-pip
```

### <br>Passo 4 - Instale o Numpy
```Python
pip install -U numpy
```

### <br>Passo 5 - Instale o OpenCV
```Python
pip3 install opencv-python
```


### <br>Passo 6 - Instale os complementos do OpenCV e as dependências extras para o uso de câmeras
```Python
sudo apt-get install libqtgui4
sudo modprobe bcm2835-v4l2
sudo apt-get install libqt4-test
```

### <br>Passo 7 - Testando

Para testar se ocorreu tudo certo com a sua instalação, digite o comando no terminal:

```Python
python3
import cv2
```
Se **nenhuma mensagem de erro aparecer**, significa que a instalação da biblioteca OpenCV foi bem sucedida! 

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3iz95ejdb07p5qtt5xp.png)


Caso isso não aconteça, pesquise seu erro em fóruns online como o StackOverflow ou no próprio GitHub 😁
 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjx929cawsoaap1p6s8n.gif)


---------------


# Método 2 - Instalação Específica (*boa sorte!*)

Utilizaremos o sistema multi-plataforma CMake para realizar a instalação da biblioteca OpenCV no ambiente do Raspberry Pi e o repositório oficial da biblioteca no GitHub. Caso queira instalar outra versão, somente altere o link no Passo 5!

### <br>Passo 1 - Expandindo o armazenamento (File System) 
Abra o terminal e digite o comando:
```
sudo raspi-config
```

Após isso, vá em **Advanced Options**
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wy23k6uut0fyjfut5szs.png)
E em **Expand File System**
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khgk46plhj6cqgpfhv50.png)

Clique em *select* e faça o reboot do Raspberry Pi.

### <br>Passo 2 - Atualizando o sistema operacional 
É estritamente necessário atualizar o sistema operacional antes de realizar qualquer operação. 
Abra o terminal e digite o comando:
```
sudo apt-get update && sudo apt-get upgrade
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oik6erji2g90obqfmezg.png)

E também, para atualizar o pacote *apt-get*:
```
sudo apt-get update
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bougsgfrugbnphmvyjpu.png)
 

### <br>Passo 3 - Instalando o CMake
O CMake é essencial para a instalação da biblioteca OpenCV. 

Etapa 3.1: Instalação do *snapd*
```
sudo apt install snapd
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oeopu4278bmutarhalo2.png)

Etapa 3.2: Instalação do *CMake Classic*
```
sudo snap install cmake --classic
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gtu8bhkvi39khre7smg.png)
 
#### Observação
Se houver o seguinte erro: *20.04 snapd issue: “system does not fully support snapd: cannot mount squashfs image…”* será necessário instalar o *certbot* e somente após prosseguir para Etapa 3.2.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4pmoqvs887gm2rgneep.png)
Abaixo segue o comando para a instalação do *certbot*:
```
sudo apt install certbot
```
Se mesmo assim o erro persistir, tente **reiniciar** o Raspberry com:
```
sudo reboot
```

### <br>Passo 4 - Instalando o *Python*
A linguagem Python vem instalada de forma padrão no Raspberry Pi, mas confira se seu status está ok com o comando
```
sudo apt-get install python3-dev
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18mt53rwj2m8c13qy167.png)
 
### <br>Passo 5 - Baixando os pacotes do OpenCV
A biblioteca OpenCV é *open-source*, ou seja, seu código é aberto e o mesmo está disponível no *GitHub*. Com os comandos a seguir, serão baixadas as versões 4.5.3 do *OpenCV* e do *OpenCV contrib*, a qual contém atualizações e melhorias.

Etapa 5.1: OpenCV 4.5.3
```
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1hnuucmhd29o3sjqw00.png)

Etapa 5.2: OpenCV Contrib 4.5.3
```
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.3.zip
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ie3tg1cn2uvb4aj7xku.png)

### <br>Passo 6 - Extraindo os pacotes do OpenCV

Para extrair os arquivos zipados, digite os comandos no terminal:
```
unzip opencv.zip
```
E, da mesma forma:
```
unzip opencv_contrib.zip
```

Após a extração, o terminal deverá estar da seguinte forma:
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v6cfi4336m5uuzmzzt9y.png)


### <br>Passo 7 - Instalando a biblioteca *numpy*

```
pip install numpy
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zz55tcbyvjbowaf4zfr.png)

### <br>Passo 8 - Preparando a instalação do OpenCV

Para realizar a instalação das bibliotecas, será preciso criar uma pasta denominada *build* dentro da pasta *opencv-4.5.3*
``` python
cd ~/opencv-4.5.3
mkdir build
cd build
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an0nyaies07ng3f7qm8r.png)


#### Atenção ⚠
Garantindo que o terminal esteja acessando a pasta *opencv-4.5.3/build*, digite o seguinte comando:
``` python
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.5.3/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D WITH_TBB=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D BUILD_EXAMPLES=OFF ..
```

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/76rmxhybsk76suo3makd.png)

Se tudo estiver correto, deverá aparecer as mensagens “*Configuring done*” e “*Generating done*”, conforme mostrado:
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptam7ebt23g8ok9m59dw.png)
  

### <br>Passo 10 - Compilando & Instalando a biblioteca OpenCV

Finalmente, para compilar e instalar a biblioteca OpenCV digite o comando *make* na pasta *opencv-4.5.3/build*
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dyecaf6srdss2mgg7t3j.png)

```
make -j4
```
##### <br>Se o seu RPi tiver menos que 4 núcleos, use somente "*make*".



 

<br> Esse é o passo em que você pode preparar o cafézinho, escutar o CD da Xuxa de trás pra frente ou assistir a trilogia **inteira** de Senhor dos Anéis porque vai demorar horas...

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/80eqkqxkfvdxjrgyc5l5.gif)

Enfim, se a sua compilação for bem-sucedida, aparecerá a seguinte mensagem no terminal:
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vj2okbdpdp77mzsriqvd.png)
 
### <br>Passo 11 - Instalando a biblioteca *libopencv*

Se você chegou até aqui (*parabéns*), agora é imprescindível a instalação da biblioteca *libopencv* na pasta *opencv-4.5.3/build* usando o comando:
```
sudo apt-get install libopencv-devpython-opencv
```
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enxunf2jde4cc8zvfel4.png)

### <br>Passo 12 - Testando OpenCV

Finalmente, para testar se a instalação foi feita corretamente, digite o comando em Python:
``` Python
python
import cv2
```

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6e7lxyf09qpa8gh5kzmu.png)

### Se você não encontrar nenhum erro, está apto a realizar seus projetos usando a biblioteca OpenCV no Raspberry Pi!


## <br>Observação extra: Se ocorrer o seguinte erro com a importação do NumPy:

``` Python
ImportError: numpy.core.multiarray failed to import
```
Abra o terminal, desinstale o NumPy com o comando:

``` Python
pip uninstall numpy
```
E, após isso, instale novamente:

``` Python
sudo pip install numpy --upgrade --ignore-installed
```

### Pronto, agora deve funcionar corretamente!
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/55phjor58z4mpe2pjmuf.gif)


<br>
#### <br>Isso é tudo pessoal, qualquer dúvida me mande uma dm no [Twitter](https://twitter.com/anzolinha) ou [Insta](https://www.instagram.com/tassianzolin/) <3
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kweg1d30ldhv2ogychmc.gif)
 

### <br>Referências 

######  BAGGIO, D. L. OpenCV 3.0 Computer Vision with Java. [S.l.]: Packt Publishing Ltd, 2015.
######  INSTALLING OpenCV using CMake in Raspberry Pi. [S. l.], 25 mar. 2021. Disponível em: https://robu.in/installing-opencv-using-cmake-in-raspberry-pi/.
######  RASPBERRY Pi 3 and OpenCV Installation Tutorial. [S. l.], 31 out. 2018. Disponível em: https://pysource.com/2018/10/31/raspberry-pi-3-and-opencv-3-installation-tutorial/.
######  ImportError: numpy.core.multiarray falhou ao importar. [S. l.], 30 mai. 2019. Disponível em: https://qastack.com.br/programming/20518632/importerror-numpy-core-multiarray-failed-to-import .