Neste tutorial, aprenderá como pip instalar o OpenCV em Ubuntu, macOS, e o Raspberry Pi.
Em tutoriais anteriores de instalação do OpenCV recomendei a compilação a partir do código fonte; no entanto, no ano passado tornou-se possível instalar o OpenCV via pip, o próprio gestor de pacotes do Python.
Embora instalar a partir do código fonte lhe dê o maior controlo sobre a sua configuração do OpenCV, é também o mais difícil e o mais demorado.
Se procura a forma mais rápida possível de instalar OpenCV no seu sistema, pretende usar pip para instalar OpenCV (mas há algumas coisas que o podem fazer tropeçar pelo caminho, por isso certifique-se de ler o resto deste guia).
2019-11-21 Update: Foi emitida uma actualização para este post do blog devido a problemas de compatibilidade com OpenCV no BusterOS do Raspberry Pi 4 a correr BusterOS usando este método de instalação de pip. Certifique-se de encontrar as actualizações via ctrl + f
enquanto procura por “2019-11-21 Update”.
Para aprender a instalar o OpenCV no seu sistema, basta continuar a ler.
Procura o código fonte para este post?
Saltar para a Secção de Downloads
pip install opencv
No resto deste tutorial, descreverei brevemente os pacotes OpenCV que pode instalar via pip, o gestor de pacotes Python.
A partir daí, irei demonstrar como instalar pip OpenCV em Ubuntu, macOS, e o Raspberry Pi.
Finalmente, irei rever alguns problemas comuns que poderão encontrar ao utilizar pip para instalar o OpenCV.
Gostaria de apontar uma importante advertência a este método de instalação do OpenCV antes de começarmos.
Os PyPi/PiWheels hospedaram versões do OpenCV que estamos a discutir hoje não incluem algoritmos “não-livres” tais como SIFT, SURF, e outros algoritmos patenteados. Este é um excelente método para instalar OpenCV se precisar de um ambiente rápido no qual não precisará de executar programas contendo os algoritmos não-livres – se não for esse o caso, terá de completar uma compilação completa do OpenCV.
Os dois pacotes pip OpenCV: opencv-python e opencv-contrib-python
Antes de começarmos, quero lembrar-vos que os métodos que aqui venho hoje são pacotes OpenCV não oficiais pré-construídos que podem ser instalados via pip – não são pacotes OpenCV oficiais lançados pelo OpenCV.org.
Apenas porque não são pacotes oficiais não significa que se deva sentir desconfortável ao usá-los, mas é importante que compreenda que não são endossados e suportados directamente pela equipa oficial do OpenCV.org.
Tudo o que foi dito – há quatro pacotes OpenCV que são instaláveis em pip no repositório PyPI:
- opencv-python: Este repositório contém apenas os módulos principais da biblioteca do OpenCV. Se for um leitor PyImageSearch não quer instalar este pacote.
- opencv-contrib-python: O repositório opencv-contrib-python contém os dois módulos principais juntamente com os módulos contrib – esta é a biblioteca que recomendo que instale, pois inclui todas as funcionalidades do OpenCV.
- opencv-python-headless: O mesmo que opencv-python mas sem funcionalidade GUI. Útil para sistemas sem cabeça.
- opencv-contrib-python-headless: O mesmo que opencv-contrib-python, mas sem funcionalidade GUI. Útil para sistemas sem cabeça.
Again, na grande maioria das situações você vai querer instalar opencv-contrib-python
no seu sistema.
Você NÃO quer instalar ambos opencv-python
e opencv-contrib-python
– escolha UM deles.
Como instalar o OpenCV em Ubuntu
Você tem duas opções para instalar o OpenCV em Ubuntu com pip:
- Instale no seu sistema
site-packages
- Instale num ambiente virtual
site-packages
(de preferência)
Primeiro, instale pip
Se não tiver pip, terá de o obter primeiro:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Opção A: Instale o OpenCV no seu sistema Ubuntu com pip
Não recomendaria este método a menos que tenha um caso de uso particular em que não queira ambientes Python isolados e independentes.
P>Pip vamos instalar opencv-contrib-python no nosso sistema:
$ sudo pip install opencv-contrib-python
Em questão de segundos, o OpenCV está pronto para ir nos pacotes do site do seu sistema!
Opção B: Instale o OpenCV no Ubuntu num ambiente virtual com pip
Existem enormes benefícios para os ambientes virtuais Python.
O principal benefício é que pode desenvolver múltiplos projectos no seu sistema com pacotes isolados (muitos com dependências de versão) sem ter de turvar as águas do seu sistema. Também é livre de adicionar e remover ambientes virtuais à medida que avança.
P>Posto de forma simples: Os ambientes virtuais Python são uma boa prática para o desenvolvimento Python. As probabilidades são, deve saltar para o bandwagon.
As minhas ferramentas de escolha são virtualenv
e virtualenvwrapper
mas pode escolher uma alternativa como venv ou Anaconda (conda para abreviar).
Aqui está como instalar virtualenv
e virtualenvwrapper
, ambos viverão no seu sistema site-packages
e gerir os pacotes de sítios do ambiente virtual de cada projecto:
$ pip install virtualenv virtualenvwrapper
Antes de podermos continuar, precisa primeiro de adicionar algumas linhas ao seu ~/.bashrc
perfil. Abra o ficheiro utilizando nano
vim
, ou emacs
e anexe estas linhas ao final:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Guardar o ficheiro. Depois “source it” no seu terminal:
$ source ~/.bashrc
Vai ver alguma saída de terminal que configura o virtualenvwrapper. Tem agora acesso a novos comandos de terminal:
- Criar um ambiente com
mkvirtualenv
. - Activar um ambiente (ou mudar para um diferente) com
workon
. - Desactivar um ambiente com
deactivate
. - Remove um ambiente com
rmvirtualenv
. - Certifica-te de que lês os documentos!
Vamos criar um ambiente virtual Python 3 para OpenCV chamado cv:
$ mkvirtualenv cv -p python3
E agora com uma varinha mágica (pip), pode instalar o OpenCV numa questão de segundos no seu novo ambiente:
$ pip install opencv-contrib-python
Como instalar o OpenCV em macOS
MacOS é semelhante ao Ubuntu para instalar o OpenCV em pip.
Again, tem duas opções para instalar o OpenCV em macOS com pip:
- Instale no seu sistema
site-packages
- Instale num ambiente virtual
site-packages
(de preferência)
Instale pip
Se não tiver pip, terá de o obter primeiro:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Opção A: Instale o OpenCV no seu sistema macOS com pip
Não faça isto.
Porquê? Na verdade recomendo que vá à Opção B e utilize um ambiente virtual.
Okay, bem, se insiste em instalar no seu sistema macOS, então é tão fácil como instalar pip OpenCV via:
$ sudo pip install opencv-contrib-python
Em questão de segundos, OpenCV está pronto para ir nos pacotes de sítios do seu sistema.
Opção B: Instale o OpenCV em macOS num ambiente virtual com pip
Apenas como gerir pacotes é uma brisa com pip….
…gerir projectos e as suas dependências é uma brisa com ambientes virtuais.
Você deve usar ambientes virtuais Python se estiver a levar a sério o desenvolvimento da visão computacional (ou qualquer desenvolvimento para esse efeito).
Não me interessa que sistema usa (seja ele virtualenv
venv
, ou conda
/Anaconda), aprenda apenas a usar um e mantenha-se fiel a ele.
Aqui está como instalar o virtualenv e o virtualenvwrapper, ambos viverão no seu sistema site-packages e gerem os sites-packages do ambiente virtual de cada projecto:
$ pip install virtualenv virtualenvwrapper
A partir daí, precisa de adicionar as seguintes linhas ao seu ~/.bash_profile
(note que para macOS o nome do ficheiro é .bash_profile
e para Ubuntu é .bashrc
.
Abrir o ficheiro usando nano
vim
, ou emacs
nano
vem na maioria dos sistemas):
$ nano ~/.bash_profile
…e anexar estas linhas ao final:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Guardar o ficheiro – se estiver a utilizar nano
os atalhos do teclado estão listados na parte inferior da janela.
Então “source it” no seu terminal:
$ source ~/.bash_profile
Verá algumas linhas de saída do terminal indicando que o virtualenvwrapper está configurado. Tem agora acesso a novos comandos de terminal:
-
mkvirtualenv
: Faça um novo ambiente virtual. -
workon
: Activar/trocar para um ambiente virtual. Lembre-se, pode ter tantos ambientes quantos desejar. -
deactivate
: Salta de um ambiente virtual e estará a trabalhar com o seu sistema. -
rmvirtualenv
: Elimina um ambiente virtual. - não se esqueça de ler os documentos!
Vamos criar um ambiente virtual Python 3 para OpenCV chamado cv:
$ mkvirtualenv cv -p python3
E agora, usando pip, e com um piscar de olhos, pode instalar o OpenCV em macOS numa questão de segundos no seu novo ambiente:
$ pip install opencv-contrib-python
Como instalar pip OpenCV em Raspberry Pi
Earlier neste post mencionei que uma das desvantagens de instalar OpenCV é que não tem qualquer controlo sobre a compilação em si – os binários são pré-construídos para si, o que, embora agradável, também significa que não pode incluir quaisquer optimizações adicionais.
Para o Raspberry Pi, estamos com sorte.
Dave Jones (criador do módulo picamera
Python) e Ben Nuttall do piwheels.org do Raspberry Pi, um repositório de pacotes Python que fornece rodas ARM (ou seja pacotes binários pré-compilados) para o Raspberry Pi.
Utilizando PiWheels poderá instalar o Pip OpenCV numa questão de segundos (o mesmo é verdade para outras bibliotecas Python que podem demorar muito tempo a compilar, incluindo NumPy, SciPy, scikit-learn, etc.).
Então como instruir o comando pip para usar o PiWheels?
A resposta curta é “Nada!”
Se estiver a usar o Raspbian Stretch ficará satisfeito por saber que o comando pip irá verificar o PiWheels para um binário pré-compilado antes de verificar o PyPI, permitindo ao seu Pi poupar um monte de ciclos de CPU (e a si um monte de tempo de instalação).
Outras vezes, quando Ben e Dave juntaram o binário OpenCV para PiWheels perguntaram-me que instruções deviam usar – recomendei a minha instalação optimizada do OpenCV para o Pi de framboesa – que é exactamente as instruções que eles seguiram!
Se acabar por usar pip para instalar o OpenCV no seu Raspberry Pi, fique descansado, está a usar a versão optimizada.
Vamos começar a aprender como instalar pip OpenCV no nosso Raspberry Pi.
Instale pré-requisitos no seu Raspberry Pi
O Raspberry Pi requer que instale alguns pacotes de sistema antes de começar:
$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5$ sudo apt-get install libatlas-base-dev$ sudo apt-get install libjasper-dev
Instale pip no seu Raspberry Pi
O gestor de pacotes Python, “pip”, pode ser obtido via wget:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Agora tem duas opções:
- Instale o OpenCV no seu Python global
site-packages
no seu Raspberry Pi - Instale o OpenCV num ambiente virtual no seu Raspberry Pi
Opção A: Instale OpenCV no seu sistema Raspberry Pi com pip
Não recomendaria esta opção se quiser poder utilizar diferentes versões de OpenCV em ambientes isolados.
Mas muitas pessoas utilizam os seus Raspberry Pis apenas para um propósito/projecto e não precisam de ambientes virtuais.
Dito isto, é uma grande confusão limpar se mudar de ideias mais tarde e quiser utilizar ambientes virtuais, por isso recomendo que salte esta opção e siga a Opção B.
Para instalar o OpenCV no seu sistema Raspberry Pi, certifique-se de usar o sudo desta forma:
$ sudo pip install opencv-contrib-python==4.1.0.25
2019-11-21 Actualização: Os leitores relataram que algumas versões do OpenCV 4 como instalado via pip não funcionam correctamente no Raspberry Pi. Poderá encontrar um erro "undefined symbol: __atomic_fetch_add8"
para libatomic
quando import cv2
de Python se não utilizar a versão específica do OpenCV mencionada no bloco de código acima.
numa questão de segundos, o OpenCV está pronto para ir nos pacotes do seu site Raspberry Pi, juntamente com quaisquer outros pacotes que possa ter instalado.
Opção B: Instale OpenCV num ambiente virtual com pip no seu Raspberry Pi
Ambientes virtuais são definitivamente o caminho a seguir se o seu Raspberry Pi tiver múltiplos propósitos (ou se for como eu e testar a compatibilidade de código entre várias versões de software para publicações em blogs a toda a hora ?).
Aqui está como instalar o virtualenv e o virtualenvwrapper, as ferramentas que utilizo para o fazer:
$ pip install virtualenv virtualenvwrapper
Então precisa de adicionar as seguintes linhas ao seu ~/.bashrc
. Abra o ficheiro utilizando nano
vim
, ou emacs
e anexe estas linhas ao final:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Guardar o ficheiro. Depois “source it” no seu terminal:
$ source ~/.bashrc
Edição final será impressa indicando que o virtualenvwrapper está pronto. Certifique-se de o inspeccionar para detectar erros.
Tem agora acesso a novos comandos do terminal:
- Criar um ambiente com
mkvirtualenv
. - Activar um ambiente (ou mudar para um diferente) com
workon
. - Desactivar um ambiente com
deactivate
. - Remove um ambiente com
rmvirtualenv
. - Certifica-te de que lês os documentos!
Para criar um ambiente virtual Python 3 que alojará o OpenCV e outros pacotes que instalar, basta usar mkvirtualenv e o comando abaixo:
$ mkvirtualenv cv -p python3
Agora tem um ambiente virtual chamado cv
. Pode activá-lo a qualquer momento via:
$ workon cv
E agora com uma viragem no pulso, pode instalar o OpenCV em cv
:
$ pip install opencv-contrib-python==4.1.0.25
2019-11-21 Update: Os leitores relataram que algumas versões do OpenCV 4 como instalado via pip não funcionam correctamente no Raspberry Pi. Pode encontrar um erro "undefined symbol: __atomic_fetch_add8"
para libatomic
quando import cv2
de Python se não utilizar a versão específica do OpenCV mencionada no bloco de código acima.
É tudo o que há com PiWheels!
Aposto que está a usar o PiCamera como o seu sensor de imagem. Pode instalar o módulo Python usando o seguinte comando (basta tomar nota das aspas):
$ pip install "picamera"
Testar a nossa instalação pip do OpenCV
Sabia que o 3.3+ do OpenCV tem um módulo DNN que pode executar modelos de Aprendizagem Profunda?
Pode ficar surpreendido, mas a sua versão de OpenCV pode fazer isto fora da caixa agora, com pouco ou nenhum software adicional.
Vamos realizar a detecção de objectos em vídeo com um Detector de Tiro Único MobileNet.
Aqui está o que precisa de instalar primeiro (assumindo um cv
ambiente virtual):
$ workon cv$ pip install imutils$ pip install "picamera" # if you're using a Raspberry Pi
Agora verifique duas vezes se tem todo o software pronto, abrindo uma shell Python:
$ workon cv$ pythonPython 3.6.3 (default, Oct 4 2017, 06:09:15) on darwinType "help", "copyright", "credits" or "license" for more information.>>> import cv2>>> cv2.__version__'4.0.1'>>> import imutils>>>
O Raspberry Pi mostrará uma versão diferente de Python 3, que é esperada.
Agora é hora de descarregar o código.
Não se esqueça de usar a secção “Downloads” deste post do blogue para descarregar o código fonte + rede neural SSD pré-treinada MobileNet.
De lá, execute o seguinte comando:
$ python real_time_object_detection.py \--prototxt MobileNetSSD_deploy.prototxt.txt \--model MobileNetSSD_deploy.caffemodel loading model... starting video stream... elapsed time: 55.07 approx. FPS: 6.54
Estou a usar um Macbook Pro. Um framerate de 6 FPS é bastante bom usando um CPU num portátil.
P>Raspberry Pis são limitados em termos de recursos, por isso podemos aproveitar alguns truques para criar a ilusão de FPS mais elevados. Se estiver no Raspberry Pi, execute o seguinte comando:
$ python pi_object_detection.py \--prototxt MobileNetSSD_deploy.prototxt.txt \--model MobileNetSSD_deploy.caffemodel loading model... starting process... starting video stream... elapsed time: 48.55 approx. FPS: 27.83
Aqui criei a ilusão de 27 FPS rápidos no Raspberry Pi enquanto a rede neural em fundo só é capaz de processar 0.9 FPS.
Como é isto possível?
Treading e filas.
É um pouco avançado, mas se ler o post original do blog (para o Raspberry Pi), compreenderá o processo. Além disso, poderá impressionar os seus amigos e familiares.
O que deve ter em atenção quando usar pip para instalar o OpenCV
Para começar, nem todas as distribuições Python terão uma versão do OpenCV que seja instalável em pip.
Novas versões do Python e sistemas operativos mais recentes (e para não mencionar, versões mais antigas que atingiram o seu fim de vida) podem não ter uma versão do OpenCV pronta para ir no repositório PyPI, uma vez que a comunidade de código aberto ainda não teve oportunidade de lançar tal versão.
Nessas situações você pode:
- Esperar até que os binários para a sua combinação de Python e SO sejam carregados.
- Li>Or qual seria a minha recomendação – compilar a partir da fonte (Ubuntu, macOS, RPi).
Segundamente, alguns leitores, incluindo utilizadores Anaconda, relataram problemas na utilização de funções GUI tais como cv2.imshow
e cv2.waitKey
.
Nestes cenários, o OpenCV irá errar dizendo que não foi compilado com suporte GTK ou QT.
Simplesmente colocado:
- Você será capaz de usar todas as outras funções do OpenCV mas não será capaz de usar nenhuma das funções GUI, em particular as do módulo highgui.
- A solução aqui é compilar a partir da fonte (Ubuntu, macOS, RPi).
p>Terceiro, sei que os leitores relataram problemas ao executar import cv2
nos seus terminais, Notebooks Jupyter, ou shells Python – isto não é um problema com a instalação pip do OpenCV.
Na maioria, mas não em todas as situações, o erro não está relacionado com a sua instalação real do OpenCV.
Em vez disso, é mais provável que seja um problema com a sua compreensão de alguma combinação de:
- Os comandos que foram executados e como utilizá-los correctamente.
- Pensando que um comando executado correctamente, mas que em vez disso resultou num erro.
- Falecer de aceder ao seu ambiente virtual Python (se estiver a utilizar um).
Vai querer verificar os seus comandos, repetir os passos, e examinar de perto a sua saída antes de relatar um problema importando o cv2
bindings.
Finalmente, a versão do OpenCV que será instalada via pip não inclui algoritmos “não livres” tais como SIFT, SURF, e outros algoritmos patenteados. Se não precisar de usar algoritmos patenteados, então é dourado. Caso contrário, recomendo que compile o OpenCV a partir da fonte através de um dos meus tutoriais de instalação para o seu sistema.
Sumário
No tutorial de hoje, aprendeu como instalar pip OpenCV no seu sistema operativo.
Especificamente, abordámos como instalar OpenCV via pip em Ubuntu, macOS, e Raspberry Pi.
Embora instalar OpenCV via pip possa ser o método mais fácil para começar, tenha em mente que pode deparar-se com outros problemas.
Se se deparar com erros ou problemas ao usar a sua instalação de OpenCV via pip, não se esqueça de consultar a secção “O que procurar quando usar pip para instalar OpenCV” deste post.
Espero que tenha gostado do tutorial de hoje!
Para ser notificado quando futuros posts do blog forem publicados aqui no blog PyImageSearch, não se esqueça de introduzir o seu endereço de e-mail no formulário abaixo.