Como instalar OpenCV 4.5 e QT5 no Raspberry Pi e NVIDIA Jetson Nano para visão computacional

OpenCV é uma das melhores ferramentas de visão computacional disponíveis. É a biblioteca de visão mecânica mais popular entre desenvolvedores e fabricantes. Por ser de código aberto, a biblioteca tem desfrutado de vasto apoio da comunidade e evoluiu como um dos pacotes de software mais maduros. O próprio OpenCV significa “Visão Computacional de Código Aberto”. A versão mais recente da biblioteca é OpenCV 4.7, disponível para uso comercial gratuito sob licença Apache. A biblioteca é especialmente útil para aplicações de visão computacional em tempo real. Ele também oferece suporte à maioria dos algoritmos comuns de aprendizado de máquina, como K-Nearest Neighbour, Naive Bayes, Random Forest, Decision Tree, Support Vector Machine, Artificial Neural Networks (ANN) e redes neurais profundas.

Quer alguém queira construir um projeto de visão de máquina usando C++ ou Python, OpenCV é a melhor ferramenta para começar. Um projeto de visão computacional pode ser facilmente construído em qualquer PC ou Mac usando OpenCV. Também é possível investir em OpenCV em projetos embarcados de visão artificial. Os microcomputadores de nova geração como Raspberry Pi, NVIDIA Jetson Nano, RockPi, etc., são bastante capazes de suportar o ambiente OpenCV.

Há grandes benefícios em executar aplicativos embarcados de visão computacional nesses computadores embarcados de baixo custo. Os microcomputadores podem funcionar 24 horas por dia, 7 dias por semana para hospedar um projeto dedicado de visão computacional que pode até envolver algoritmos de aprendizado de máquina ou aprendizado profundo, também sem quaisquer arranjos especiais além de um bom dissipador de calor. A aplicação pode ser implementada a custos incrivelmente baixos sem comprometer a eficiência. Além disso, os microcomputadores são capazes de realizar muitos cálculos localmente, o que os torna mais adequados para computação de ponta ou como neblina.

Neste tutorial, veremos como instalar o OpenCV 4.5 no Raspberry Pi. O modelo Raspberry Pi usado neste tutorial é Raspberry Pi 4B com 8 GB de RAM. Outros modelos Raspberry Pi 4 também podem ser usados. Mesmo que a configuração possa ser feita no Raspberry Pi 3 ou 2, o OpenCV pode ter um desempenho comprometido nessas placas. O Raspberry Pi 4B usado neste tutorial é instalado com o Raspbian Bullseye. As mesmas instruções ditadas aqui são aplicáveis ​​à instalação do OpenCV no NVIDIA Jetson Nano inicializado a partir de um sistema operacional Debian.

A configuração do OpenCV no Raspberry Pi ou em qualquer outro microcomputador Linux é a primeira coisa que se precisa fazer antes de embarcar no desenvolvimento de um aplicativo de visão de máquina. A configuração é demorada e pode ser frustrante para iniciantes, especialmente para aqueles que são novos no Linux e em scripts Shell. Mesmo que uma etapa seja perdida, toda a configuração pode ser prejudicada. Este tutorial irá guiá-lo passo a passo para concluir a instalação do OpenCV 4.5 mais QT5 no Raspberry Pi 4B instalado com Raspbian Bullseye.

Existem duas maneiras de instalar o OpenCV em qualquer sistema. Um é um método simples de instalação PIP. A segunda é compilar o OpenCV a partir da fonte. O método de instalação PIP é simples e curto, mas não expõe todos os detalhes do software. A compilação do código-fonte leva horas para ser concluída, resultando em uma instalação completa e otimizada, onde todos os recursos do OpenCV podem ser obtidos de uma só vez. Este tutorial detalha o método de compilação a partir da fonte e percorre passo a passo a instalação completa em um Raspberry Pi. Ao contrário de um PC ou Mac, a instalação em um microcomputador como Raspberry Pi envolve várias etapas necessárias para otimizar a instalação especificamente para a placa-alvo. Todas essas etapas são fornecidas neste tutorial na sequência correta.

Sem perder tempo, vamos rapidamente à configuração. O processo completo levará algumas horas para ser concluído. Dependendo da placa-alvo, como alguma outra variante do Raspberry Pi ou um microcomputador diferente, pode demorar ainda mais. Portanto, seja paciente e faça pausas ocasionais no seu cubículo para tomar um café enquanto a instalação é concluída. Vamos começar.

Confirme as especificações do sistema operacional
A primeira coisa que você precisa verificar são as especificações do sistema operacional. A configuração para um sistema operacional de 32 bits seria diferente de uma configuração para o sistema operacional de 64 bits. Abra o Terminal Bash e execute o seguinte comando.
$ unome -a

Se a versão do Linux relatada contiver a string ‘armv7l’, o sistema operacional instalado no Raspberry Pi é de 32 bits. Se contiver a string 'aarch64', será de 64 bits. O guia de instalação apresentado neste tutorial é apenas para sistemas operacionais de 32 bits.

Em seguida, você precisa confirmar a versão do sistema operacional. Isso pode ser feito executando o seguinte comando no Terminal.
$ cat /etc/os-release

O comando acima resulta em metainformações sobre a versão Raspbian instalada no Raspberry Pi. Nosso Raspberry Pi 4B (8 GB) é instalado com o sistema operacional Raspbian Bullseye mais recente. Existe um outro comando que fornece ainda mais informações sobre a placa e também sobre o sistema operacional. Isso é o seguinte.
$ hostnamectl

Se você não preparou seu Raspberry Pi, é melhor instalar o sistema operacional Raspbian de 32 bits para este tutorial e os tutoriais de visão computacional que se seguem. Se você já possui o Raspberry Pi instalado com sistema operacional, confirme se é a versão de 32 bits. Sugerimos instalar o Raspberry Pi OS de 32 bits com desktop e software recomendado.

Expandir sistema de arquivos
Em seguida, você deve expandir o sistema de arquivos Raspberry Pi e utilizar todo o espaço do cartão MicroSD. Por padrão, quando uma imagem do sistema operacional é aplicada a um cartão MicroSD, muito espaço nele fica inutilizável. Como a configuração do OpenCV em si consome alguns gigabytes, devemos recuperar todo o espaço em um cartão MicroSD de 32 GB expandindo o sistema de arquivos Raspberry Pi. Caso contrário, a configuração poderá falhar ou mesmo se for concluída, o OpenCV poderá não ter espaço suficiente para arquivos e atualizações do usuário. Um espaço esgotado pode resultar em grave desempenho inferior de um aplicativo de visão computacional. Para expandir o sistema de arquivos no Raspberry Pi, abra o Bash Terminal e execute o seguinte comando para abrir as configurações do Raspberry Pi.
$ sudo raspi-config

Na janela pop-up, selecione “opções avançadas”.

Em seguida, selecione “A1 Expand Filesystem” e clique em “OK” para reiniciar.

Após a reinicialização, todo o espaço do cartão MicroSD será recuperado pelo Raspberry Pi OS. O espaço recém-disponível no cartão pode ser verificado executando o seguinte comando no Terminal Bash.
df-h

Você pode ver que temos 18 GB de espaço disponível no cartão MicroSD após expandir o sistema de arquivos, enquanto 8,9 GB são usados ​​pelo sistema operacional.

Aumente a memória da GPU
A RAM é usada pela CPU e GPU. No Raspberry Pi 2B/3B, apenas 64 MB de RAM são alocados para GPU, enquanto no Raspberry Pi 4B são apenas 76 MB. Isso pode ser inadequado para projetos de visão mecânica. A alocação de RAM para GPU deve ser de pelo menos 128 MB, para que um aplicativo de visão computacional não engasgue. Para aumentar a alocação de RAM para GPU, abra a janela “Configuração do Raspberry Pi” navegando até Menu Raspberry Pi->Preferências->Configuração do Raspberry Pi.

Na janela “Configuração do Raspberry Pi”, selecione a guia “Desempenho” e aumente a memória da GPU para 128. Quando você clica em “OK” após aumentar a alocação de RAM para a GPU, o Raspberry Pi solicita que você reinicie. Selecione “Sim” para reiniciar e a alocação de GPU entrará em vigor.

Atualizar EEPROM
Outra otimização que devemos fazer antes de prosseguir com a instalação do OpenCV é atualizar a EEPROM do Raspberry Pi. Embora o Raspberry Pi inicialize seu sistema operacional a partir do cartão MicroSD, ele também é inicializado parcialmente a partir de duas EEPROMs. Embora as EEPROMs não tenham nada a ver com OpenCV, observou-se que a versão mais recente da EEPROM reduz a temperatura da CPU de 65˚C para 48˚C. Os aplicativos de visão computacional exigem bastante CPU; se uma simples atualização na EEPROM puder diminuir a temperatura da CPU, isso pode aumentar o desempenho do aplicativo. Para verificar a versão EEPROM, execute o seguinte comando no Terminal Bash.
$ sudo rpi-eeprom-atualização
Se a EEPROM estiver atualizada, tudo bem. Caso contrário, execute o seguinte comando no Terminal para atualizar a EEPROM.
$ sudo rpi-eeprom-update -a

Aumente o espaço SWAP
OpenCV requer muita memória para compilar. A versão estável mais recente do OpenCV4.5 requer pelo menos 6,5 GB de espaço antes de ser construída. Por isso, você deve aumentar o espaço de swap, que por padrão é limitado a 2.048 MB. Para aumentar o espaço de troca, abra /sbin/dphys-swapfile executando o seguinte comando no Terminal Bash.
$ sudo nano /sbin/dphys-swapfile

Assim que o arquivo estiver aberto no editor nano, pule para o sinalizador CONF_MAXSWAP e altere-o de 2.048 MB para 4.096 MB. Salve o arquivo pressionando Ctrl+S e feche o arquivo pressionando Ctrl+X. Em seguida, abra /etc/dphys-swapfile executando o seguinte comando.
$ sudo nano /etc/dphys-swapfile
Agora, altere CONF_SWAPSIZE para 4096 de 2048. Por fim, reinicie o Raspberry Pi para que as alterações tenham efeito executando o seguinte comando no Terminal.
$ sudo reiniciar

Atualizando e atualizando o Raspbian com sucesso
Em uma nova instalação do Raspbian, quando são executados comandos de atualização e atualização do SO, observa-se que embora a atualização seja feita com sucesso, a atualização resulta no seguinte erro.
E: Não foi possível buscar alguns arquivos, pode ser executado apt-get update ou tentar com –fix-missing?
O erro acima é encontrado apenas no sistema operacional Raspberry Pi de 32 bits. No Raspberry Pi OS de 64 bits, esse erro não foi encontrado. Embora muitos fabricantes optem pelo sistema operacional de 64 bits apenas para contornar o erro acima. O erro é resultado da falta de arquivos e bibliotecas do repositório de origem. Isso pode ser facilmente corrigido redirecionando o repositório de origem para um link de espelho adequado. É importante contornar esse erro, caso contrário, arquivos corrompidos ou ausentes no Raspbian podem resultar em comportamento imprevisível de nosso aplicativo OpenCV.

Para redirecionar o repositório de origem, abra /etc/apt/sources.list no editor nano executando o seguinte comando no Terminal Bash.
$ sudo nano /etc/apt/sources.list

Quando o arquivo abrir no editor nano, comente a primeira linha indicando o repositório de origem original e adicione a seguinte linha no final.
deb bullseye contribuição principal rpi não livre

Salve o arquivo pressionando Ctrl+S e feche o arquivo pressionando Ctrl+X. Reinicie o Raspberry Pi para que as alterações tenham efeito. Agora, quando você atualiza e atualiza o Raspbian de 32 bits, nenhum erro é encontrado. Os outros links de espelho que funcionam perto de localizações geográficas específicas podem ser encontrados neste link.

Instalar dependências
Antes de instalar o OpenCV, você precisa instalar vários pacotes de terceiros exigidos pelo OpenCV. Alguns desses pacotes podem já ter vindo instalados com o Raspbian. Ainda assim, é melhor instalar todos os pacotes necessários do que encontrar alguns erros posteriormente. Se a versão mais recente de algum pacote já estiver instalada com o Raspbian, ela será automaticamente ignorada pela execução do comando. Execute os seguintes comandos no Terminal Bash, um por um, para instalar os conjuntos necessários de pacotes de software pelo OpenCV.

$ sudo apt-get atualização
$ sudo apt-get atualização
$ sudo apt-get install cmake gfortran
$ sudo apt-get install python3-dev python3-numpy
$ sudo apt-get install libjpeg-dev libtiff-dev libgif-dev
$ sudo apt-get install libgstreamer1.0-dev gstreamer1.0-gtk3
$ sudo apt-get install libgstreamer-plugins-base1.0-dev gstreamer1.0-gl
$ sudo apt-get instalar libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk*
$ sudo apt-get instalar libxvidcore-dev libx264-dev libgtk-3-dev
$ sudo apt-get instalar libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install libjasper-dev liblapack-dev libhdf5-dev
$ sudo apt-get install protobuf-compiler

Instale QT5
QT5 é uma estrutura de código aberto para o desenvolvimento de interfaces gráficas de usuário multiplataforma. Ele também pode ser usado no Raspberry Pi para construir belas interfaces de usuário para aplicativos incorporados. Alguns aplicativos de visão computacional podem exigir interação por meio de uma interface de usuário. Embora adicionar uma interface de usuário possa desacelerar um pouco o aplicativo de visão de máquina, pode ser necessário ou útil adicionar uma interface em alguns aplicativos. Para instalar o QT5 no Raspbian Buster, execute os seguintes comandos um por um no Bash Terminal.

$ sudo apt-get install qt5-default
$ sudo apt-get install qtcreator
$ sudo apt-get install qtdeclarative5-dev

Para instalar o QT5 no Raspbian Bullseye, execute os seguintes comandos um por um no Bash Terminal.

$ sudo apt-get install qtbase5-dev qtchooser
$ sudo apt-get install qt5-qmake qtbase5-dev-tools
$ sudo apt-get install qtcreator
$ sudo apt-get install qtdeclarative5-dev

Já temos alguns tutoriais sobre como construir interfaces gráficas de usuário no Raspberry Pi para aplicações embarcadas usando o framework Tkinter. Você deve dar uma olhada neles.

GUI Python com Tkinter
Widgets Tkinter e TTK
Menus TTK, gerenciamento de layout, eventos e multithreading
Driver de LED controlado por GUI
Interface de um botão e entrada digital

Baixar OpenCV
Depois de instalar todos os pacotes de terceiros, é hora de instalar o OpenCV. Existem dois pacotes para OpenCV — uma versão básica e contribuições adicionais. Você pode encontrar as versões mais recentes do OpenCV neste link. Estaremos instalando o OpenCV4.5.5 aqui. Você também pode instalar o mais recente e alterar o número da versão de acordo nos comandos a seguir. A instalação consumirá RAM suficiente, então primeiro verifique se há RAM suficiente disponível para instalação executando o seguinte comando no Terminal Bash.
$ grátis -m

Como estamos usando a variante de 8 GB do Raspberry Pi 4B, você pode notar que temos RAM mais que suficiente à nossa disposição. Em seguida, abra o diretório raiz executando o seguinte comando no Terminal Bash.
$cd~

Baixe os pacotes OpenCV4.5 no diretório raiz executando os seguintes comandos no Terminal Bash.
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip

Descompacte os pacotes executando os seguintes comandos no Terminal.
$ descompacte opencv.zip
$ descompacte opencv_contrib.zip

Renomeie os diretórios para nomes mais simples executando os seguintes comandos no Terminal.
$ mv opencv-4.5.5 opencv
$ mv opencv_contrib-4.5.5 opencv_contrib

Por fim, livre-se dos arquivos ZIP baixados executando os seguintes comandos no Terminal.
$rm opencv.zip
$rm opencv_contrib.zip

Instalando ambientes virtuais
OpenCV pode ser instalado em um sistema com ou sem ambiente virtual. Se você deseja trabalhar com apenas uma versão do OpenCV, não há necessidade de um ambiente virtual. No entanto, é possível que você precise explorar alguns recursos de uma versão OpenCV recém-lançada ou tentar alguma versão antiga do OpenCV; você não pode executar as duas versões juntas sem ambientes virtuais. Suponha que você tenha duas versões do OpenCV instaladas em seu Raspberry Pi e importe o OpenCV em um script Python, como o Python saberá qual versão do OpenCV importar? A instalação do OpenCV normalmente ocupa pouco mais de 1 GB de espaço em um cartão MicroSD. Não há mal nenhum em instalar e manter mais de uma versão OpenCV no mesmo cartão SD. Porém, várias versões do OpenCV podem ser chamadas dentro de um script apenas por meio de diferentes ambientes virtuais. Portanto, se você tiver OpenCV 4.5 e OpenCV 3.4 instalados no mesmo cartão MicroSD, precisará de dois ambientes virtuais diferentes para chamar diferentes versões de CV em scripts Python.

Se você não deseja acessar o OpenCV através de ambientes virtuais e ainda deseja trabalhar com diferentes versões do OpenCV, a única maneira que resta é instalar diferentes versões do OpenCV em diferentes cartões MicroSD com Raspbian OS. Para instalar ambientes virtuais no Raspberry Pi, é melhor fazê-lo através de pip, virtualenv e virtualenvwrapper. Você deve ter o pip instalado no Raspberry Pi. Com um sistema operacional Raspberry Pi de 32 bits, incluindo desktop e software recomendado, o pip3 já deve estar instalado no Raspberry Pi. Para instalar o virtualenv e o virtualenvwrapper, execute os seguintes comandos no Terminal Bash.
$ sudo pip3 instalar virtualenv
$ sudo pip3 instalar virtualenvwrapper

Após a instalação do virtualenv e do virtualenvwrapper, abra o arquivo ~/.bashrc executando o seguinte comando no Terminal.
$nano ~/.bashrc

No arquivo ~/.bashrc, anexe as seguintes linhas na parte inferior.
exportar WORKON_HOME=$HOME/.virtualenvs
exportar VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
fonte /usr/local/bin/virtualenvwrapper.sh

Salve o arquivo pressionando Ctrl+S e feche o arquivo pressionando Ctrl+X. Agora recarregue o arquivo ~/.bashrc para aplicar as alterações à sessão bash atual executando o seguinte comando.
$ fonte ~/.bashrc

Em seguida, crie um ambiente virtual com o nome “cv” com Python3.x executando o seguinte comando no Terminal.
$ mkvirtualenv cv -p python3

Assim que você criar um ambiente virtual, ele será ativado na sessão atual do Bash.

Enquanto o ambiente virtual estiver ativado, instale picamera e numpy dentro do ambiente executando os seguintes comandos no Terminal Bash.
$ pip instalar “picamera(matriz)”
$ pip3 instalar numpy

Você pode desativar o ambiente virtual em uma sessão Bash atual a qualquer momento executando o seguinte comando.
$ desativar

Além disso, o ambiente virtual pode ser ativado em uma sessão Bash atual a qualquer momento executando o seguinte comando
$ trabalho em cv

Observe que “cv” é o nome do ambiente virtual que criamos.

Construir OpenCV
Agora é hora de construir o pacote OpenCV. Ative o ambiente virtual 'cv' executando o seguinte comando no Terminal Bash (se não estiver ativado).
$ trabalho em cv

Abra a pasta OpenCV, crie um diretório chamado build e abra o diretório executando os seguintes comandos.
$ cd ~/opencv/
$ compilação mkdir

$cd compilação

Finalmente, diga ao cmake para construir o OpenCV executando o seguinte comando que inclui vários sinalizadores importantes.

$ cmake -D CMAKE_BUILD_TYPE = RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local\
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON = LIGADO \
-D ENABLE_VFPV3 = LIGADO \
-D COM_OPENMP=ON \
-D COM_OPENCL = DESLIGADO \
-D CONSTRUIR_ZLIB=ON \
-D CONSTRUIR_TIFF=ON \
-D COM_FFMPEG=ON \
-D COM_TBB=ON \
-D CONSTRUÇÃO_TBB=ON \
-D CONSTRUÇÃO_TESTES = DESLIGADO \
-D COM_EIGEN = DESLIGADO \
-D COM_GSTREAMER=ON\
-D COM_V4L = LIGADO \
-D COM_LIBV4L=ON\
-D COM_VTK = DESLIGADO \
-D COM_QT = DESLIGADO \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES = DESLIGADO \
-D INSTALL_PYTHON_EXAMPLES = DESLIGADO \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages\
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES = DESLIGADO ..

O processo de construção levará muito tempo. Depois que o OpenCv for construído, você poderá ver a mensagem de saída conforme mostrado na imagem abaixo.

Faça e instale OpenCV
Após a conclusão da construção do OpenCV, inicie o processo de compilação usando todos os quatro núcleos do Raspberry Pi executando o seguinte comando no ambiente virtual ativado da sessão Bash atual.
$faça-j4

No Raspberry Pi 4, pode demorar cerca de 2 horas. Em outras variantes do Raspberry Pi, pode levar de 5 a 8 horas. Você precisa esperar até que a meta de construção de 100% seja concluída.

Depois que o OpenCV for compilado com sucesso, instale o OpenCV no ambiente virtual “cv” executando o seguinte comando.
$ sudo make install

Em seguida, crie os links e cache necessários para o pacote OpenCV instalado recentemente executando o seguinte comando.
$ sudoldconfig

Limpe recursos e atualize o banco de dados do sistema executando os seguintes comandos.
$ fazer limpo
$ sudo apt-get atualização

Finalmente, abra o arquivo /etc/dphys-swapfile e redefina CONF_SWAPSIZE para 100.

Link Sym para OpenCV
Temos o OpenCV instalado em um ambiente virtual 'cv'. Finalmente, precisamos criar um link simbólico para a biblioteca. Caso contrário, o Python não conseguiria encontrar e importar o OpenCV. Para criar um link simbólico, abra a pasta ~/.virtualenvs/cv/lib/python3.9/site-packages. O caminho da pasta pode ser diferente dependendo do nome atribuído ao ambiente virtual e da versão do Python. Lembre-se do nome que você atribuiu ao ambiente virtual e confirme a versão do Python executando o seguinte comando.
$ python –versão

Execute os seguintes comandos para abrir a pasta ~/.virtualenvs/cv/lib/python3.9/site-packages, crie um link simbólico chamado 'cv2.so' e retorne à pasta raiz.
$ cd ~/.virtualenvs/cv/lib/python3.9/site-packages
$ ln -s /usr/local/lib/python3.9/site-packages/cv2/python-3.9/cv2.cpython-37m-arm-linux-gnueabihf.so
$cd~

Verifique a instalação do OpenCV
Por último, agora você deve verificar a instalação do OpenCV. Ative o ambiente virtual 'cv' e importe a biblioteca OpenCV pelo link simbólico “cv2” em um script Python. Se o OpenCV for importado com sucesso para o script sem produzir erros, o OpenCV será instalado para o ambiente virtual.

Você pode confirmar as informações de compilação sobre a versão instalada do OpenCV executando o seguinte script Python.
$ píton
>>> importar cv2
>>> imprimir(cv2.getBuildInformation )

Ao executar o script, as informações de compilação da versão OpenCV instalada serão impressas no Terminal.

Isso conclui a instalação do OpenCV4.5 no Raspbian Bullseye. Uma instalação semelhante ocorrerá para outros microcomputadores rodando um derivado Linux Debian.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.