In deze tutorial leer je hoe je pip OpenCV installeert op Ubuntu, macOS en de Raspberry Pi.
In eerdere OpenCV installatie-tutorials heb ik aangeraden om te compileren vanaf broncode; het afgelopen jaar is het echter mogelijk geworden om OpenCV te installeren via pip, Python’s eigen package manager.
Hoewel installeren vanaf broncode je de meeste controle geeft over je OpenCV configuratie, is het ook de moeilijkste en meest tijdrovende methode.
Als u op zoek bent naar de snelst mogelijke manier om OpenCV op uw systeem te installeren, dan kunt u pip gebruiken om OpenCV te installeren (maar er zijn een paar dingen die u onderweg kunnen tegenhouden, dus zorg ervoor dat u de rest van deze gids leest).
2019-11-21 Update: Deze blog post is bijgewerkt vanwege compatibiliteitsproblemen met OpenCV op de Raspberry Pi 4 waarop BusterOS draait met deze pip installatie methode. Zorg ervoor dat u de updates vindt via ctrl + f
als u zoekt naar “2019-11-21 Update”.
Om te leren hoe u OpenCV met pip installeert op uw systeem, leest u gewoon verder.
Op zoek naar de broncode van dit bericht?
Spring direct naar de downloadsectie
pip install opencv
In de rest van deze tutorial beschrijf ik in het kort de OpenCV-pakketten die je via pip, de pakketbeheerder van Python, kunt installeren.
Daarna demonstreer ik hoe je OpenCV met pip kunt installeren op Ubuntu, macOS en de Raspberry Pi.
Ten slotte bespreek ik een aantal veel voorkomende problemen die je kunt tegenkomen als je pip gebruikt om OpenCV te installeren.
Ik wil graag wijzen op een belangrijk voorbehoud bij deze OpenCV installatie methode voordat we beginnen.
De PyPi/PiWheels gehoste versies van OpenCV die we vandaag bespreken bevatten geen “niet-vrije” algoritmen zoals SIFT, SURF, en andere gepatenteerde algoritmen. Dit is een goede methode om OpenCV te installeren als je een snelle omgeving nodig hebt waarin je geen programma’s hoeft te draaien die de niet-vrije algoritmen bevatten – als dat niet het geval is, zul je OpenCV volledig moeten compileren.
De twee pip OpenCV pakketten: opencv-python en opencv-contrib-python
Voordat we beginnen wil ik je eraan herinneren dat de methodes die ik hier vandaag kom onofficiële pre-built OpenCV pakketten zijn die via pip geïnstalleerd kunnen worden – het zijn geen officiële OpenCV pakketten die zijn vrijgegeven door OpenCV.org.
Omdat het geen officiële pakketten zijn, betekent niet dat je je ongemakkelijk moet voelen om ze te gebruiken, maar het is belangrijk voor je om te begrijpen dat ze niet direct worden onderschreven en ondersteund door het officiële OpenCV.org team.
Dat gezegd hebbende – er zijn vier OpenCV pakketten die pip-installeerbaar zijn op de PyPI repository:
- opencv-python: Deze repository bevat alleen de hoofdmodules van de OpenCV bibliotheek. Als je een PyImageSearch lezer bent, wil je dit pakket niet installeren.
- opencv-contrib-python: De opencv-contrib-python repository bevat zowel de hoofdmodules samen met de contrib modules – dit is de bibliotheek die ik je aanraad te installeren omdat het alle OpenCV functionaliteit bevat.
- opencv-python-headless: Hetzelfde als opencv-python maar geen GUI-functionaliteit. Handig voor headless systemen.
- opencv-contrib-python-headless: Hetzelfde als opencv-contrib-python maar geen GUI functionaliteit. Nuttig voor headless systemen.
Opnieuw, in de overgrote meerderheid van de situaties zult u opencv-contrib-python
op uw systeem willen installeren.
U wilt NIET zowel opencv-python
als opencv-contrib-python
installeren – kies EEN van hen.
Hoe pip OpenCV installeren op Ubuntu
U heeft twee opties om OpenCV op Ubuntu te installeren met pip:
- Installeer in uw systeem
site-packages
- Installeer in een virtuele omgeving’s
site-packages
(voorkeur)
Installeer eerst pip
Als u pip niet hebt, moet u het eerst verkrijgen:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Optie A: Installeer OpenCV op uw Ubuntu systeem met pip
Ik zou deze methode niet aanraden, tenzij u een bepaalde use case heeft waarbij u geen geïsoleerde, onafhankelijke Python omgevingen wilt.
Laten we pip install opencv-contrib-python op ons systeem uitvoeren:
$ sudo pip install opencv-contrib-python
In een paar seconden is OpenCV klaar voor gebruik in de site-pakketten van je systeem!
Optie B: Installeer OpenCV op Ubuntu in een virtuele omgeving met pip
Er zijn grote voordelen aan virtuele Python-omgevingen.
Het belangrijkste voordeel is dat je meerdere projecten op je systeem kunt ontwikkelen met geïsoleerde pakketten (veel met versie afhankelijkheden) zonder dat je het water van je systeem hoeft te vertroebelen. Je bent ook vrij om virtuele omgevingen toe te voegen en te verwijderen als je gaat.
Eenvoudig gezegd: Python virtuele omgevingen zijn een best practice voor Python ontwikkeling. De kans is groot dat je mee moet doen.
Mijn favoriete tools zijn virtualenv
en virtualenvwrapper
, maar je kunt ook een alternatief kiezen zoals venv of Anaconda (kortweg conda).
Hier staat hoe u virtualenv
en virtualenvwrapper
installeert, die beide in uw systeem site-packages
zullen leven en de site-pakketten van de virtuele omgeving van elk project zullen beheren:
$ pip install virtualenv virtualenvwrapper
Voordat we verder kunnen gaan, moet u eerst enkele regels toevoegen aan uw ~/.bashrc
profiel. Open het bestand met nano
vim
, of emacs
en voeg deze regels toe aan het einde:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Sla het bestand op. Dan “source it” in uw terminal:
$ source ~/.bashrc
U zult wat terminal uitvoer zien die virtualenvwrapper instelt. U heeft nu toegang tot nieuwe terminal commando’s:
- Creëer een omgeving met
mkvirtualenv
. - Activeer een omgeving (of schakel over naar een andere) met
workon
. - Deactiveer een omgeving met
deactivate
. - Verwijder een omgeving met
rmvirtualenv
. - Lees zeker de docs!
Laten we een Python 3 virtuele omgeving voor OpenCV maken, genaamd cv:
$ mkvirtualenv cv -p python3
En nu met een toverstaf (pip), kunt u OpenCV in een kwestie van seconden met pip installeren in uw nieuwe omgeving:
$ pip install opencv-contrib-python
Hoe pip OpenCV te installeren op macOS
MacOS is vergelijkbaar met Ubuntu voor pip-installatie van OpenCV.
Ook hier heb je twee opties om OpenCV op macOS te installeren met pip:
- Installeer in uw systeem
site-packages
- Installeer in een virtuele omgeving’s
site-packages
(voorkeur)
Installeer pip
Als u pip niet hebt, moet u het eerst verkrijgen:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Optie A: Installeer OpenCV op uw macOS-systeem met pip
Doe dit niet.
Waarom? Ik raad je eigenlijk aan om naar optie B te gaan en een virtuele omgeving te gebruiken.
Okee, nou als je erop staat om op je macOS systeem te installeren, dan is het net zo makkelijk als pip OpenCV installeert via:
$ sudo pip install opencv-contrib-python
In een kwestie van seconden, is OpenCV klaar om te gaan in de site-pakketten van je systeem.
Optie B: Installeer OpenCV op macOS in een virtuele omgeving met pip
Net zoals het beheren van pakketten een fluitje van een cent is met pip….
…is het beheren van projecten en hun afhankelijkheden een fluitje van een cent met virtuele omgevingen.
U zou virtuele Python-omgevingen moeten gebruiken als u serieus bent over computervisie-ontwikkeling (of welke ontwikkeling dan ook wat dat betreft).
Het maakt me niet uit welk systeem je gebruikt (of het nu virtualenv
venv
, of conda
/Anaconda is), leer er gewoon een te gebruiken en blijf erbij.
Hier staat hoe je virtualenv en virtualenvwrapper installeert, die beide in je systeem site-pakketten komen te staan en de virtuele omgeving site-pakketten van elk project beheren:
$ pip install virtualenv virtualenvwrapper
Van daaruit moet u de volgende regels toevoegen aan uw ~/.bash_profile
(merk op dat voor macOS de bestandsnaam .bash_profile
is en voor Ubuntu is het .bashrc
.
Open het bestand met nano
vim
, of emacs
nano
komt op de meeste systemen):
$ nano ~/.bash_profile
…en voeg deze regels toe aan het eind:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Sla het bestand op – als u nano
gebruikt, staan de sneltoetsen onderin het venster vermeld.
Doe dan de “source it” in uw terminal:
$ source ~/.bash_profile
U zult een paar regels terminal output zien die aangeven dat virtualenvwrapper is ingesteld. U heeft nu toegang tot nieuwe terminal commando’s:
-
mkvirtualenv
: Maak een nieuwe virtuele omgeving. -
workon
: Activeer/schakel over naar een virtuele omgeving. Vergeet niet dat je zoveel omgevingen kunt hebben als je wilt. -
deactivate
: Springt uit een virtuele omgeving en je werkt met je systeem. -
rmvirtualenv
: Verwijdert een virtuele omgeving. - Zorg ervoor dat je de docs leest!
Laten we een Python 3 virtuele omgeving voor OpenCV maken, genaamd cv:
$ mkvirtualenv cv -p python3
En nu, met pip, en met een oogwenk, kun je OpenCV op macOS in een paar seconden pip-installeren in je nieuwe omgeving:
$ pip install opencv-contrib-python
Hoe pip OpenCV installeren op Raspberry Pi
Eerder in deze post heb ik gezegd dat een van de nadelen van het installeren van OpenCV is dat je geen controle hebt over het compileren zelf – de binaries worden voor je voorgebouwd, wat weliswaar leuk is, maar ook betekent dat je geen extra optimalisaties kunt toevoegen.
Voor de Raspberry Pi hebben we geluk.
Dave Jones (maker van de picamera
Python-module) en Ben Nuttall van de Raspberry Pi-gemeenschap runnen piwheels.org, een Python-pakketrepository die ARM-wielen (d.w.z., voorgecompileerde binaire pakketten) voor de Raspberry Pi.
Met PiWheels kun je OpenCV in een paar seconden pip installeren (hetzelfde geldt voor andere Python bibliotheken die veel tijd kosten om te compileren, zoals NumPy, SciPy, scikit-learn, etc.).
Dus hoe instrueer je het pip commando om PiWheels te gebruiken?
Het korte antwoord is “Niets!”
Als je Raspbian Stretch gebruikt, zul je blij zijn te weten dat het pip commando PiWheels controleert op een voorgecompileerde binary voordat het PyPI controleert, waardoor je Pi een hoop CPU cycles bespaart (en jij een hoop installatietijd).
Toen Ben en Dave de OpenCV binary voor PiWheels samenstelden, vroegen ze me welke instructies ze moesten gebruiken – ik raadde ze mijn geoptimaliseerde OpenCV installatie voor de Raspberry Pi aan – en dat is precies de instructie die ze hebben gevolgd!
Als je uiteindelijk pip gebruikt om OpenCV op je Raspberry Pi te installeren, wees er dan zeker van dat je de geoptimaliseerde versie gebruikt.
Laten we beginnen met te leren hoe je pip OpenCV op onze Raspberry Pi installeert.
Installeer de voorvereisten op uw Raspberry Pi
De Raspberry Pi vereist dat u een paar systeempakketten installeert voordat u aan de slag gaat:
$ 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
Installeer pip op je Raspberry Pi
De Python package manager, “pip”, kan worden verkregen via wget:
$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py
Nu heb je twee opties:
- Installeer OpenCV in uw globale Python
site-packages
op uw Raspberry Pi - Installeer OpenCV in een virtuele omgeving op uw Raspberry Pi
Optie A: Installeer OpenCV op je Raspberry Pi systeem met pip
Ik zou deze optie niet aanraden als je verschillende versies van OpenCV in geïsoleerde omgevingen wilt kunnen gebruiken.
Maar veel mensen zetten hun Raspberry Pi’s in voor slechts één doel/project en hebben geen virtuele omgevingen nodig.
Dit gezegd hebbende, het is nogal een puinhoop om op te ruimen als je later van gedachten verandert en virtuele omgevingen wilt gebruiken, dus ik zou aanraden deze optie over te slaan en optie B te volgen.
Om OpenCV met pip op je Raspberry Pi systeem te installeren, moet je sudo gebruiken zoals dit:
$ sudo pip install opencv-contrib-python==4.1.0.25
2019-11-21 Update: Lezers hebben gemeld dat sommige versies van OpenCV 4 zoals geïnstalleerd via pip niet goed werken op de Raspberry Pi. U kunt een "undefined symbol: __atomic_fetch_add8"
voor libatomic
fout tegenkomen wanneer u import cv2
vanuit Python als u niet de specifieke versie van OpenCV gebruikt die in het codeblok hierboven wordt genoemd.
In een paar seconden is OpenCV klaar voor gebruik in de site-pakketten van uw Raspberry Pi, samen met andere pakketten die u mogelijk hebt geïnstalleerd.
Optie B: Installeer OpenCV in een virtuele omgeving met pip op je Raspberry Pi
Virtuele omgevingen zijn zeker de manier om te gaan als je Raspberry Pi meerdere doeleinden heeft (of als je bent zoals ik en de hele tijd code compatibiliteit test tussen verschillende softwareversies voor blogposts ?).
Hier zie je hoe je virtualenv en virtualenvwrapper installeert, de tools die ik gebruik om dit voor elkaar te krijgen:
$ pip install virtualenv virtualenvwrapper
Dan moet je de volgende regels toevoegen aan je ~/.bashrc
. Open het bestand met nano
vim
, of emacs
en voeg deze regels toe aan het einde:
# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh
Sla het bestand op. Dan “source it” in uw terminal:
$ source ~/.bashrc
Terminal uitvoer zal worden afgedrukt om aan te geven dat virtualenvwrapper klaar is. Zorg ervoor dat u het inspecteert op fouten.
U heeft nu toegang tot nieuwe terminal commando’s:
- Maak een omgeving aan met
mkvirtualenv
. - Activeer een omgeving (of schakel over naar een andere) met
workon
. - Deactiveer een omgeving met
deactivate
. - Verwijder een omgeving met
rmvirtualenv
. - Lees zeker de docs!
Om een Python 3 virtuele omgeving te maken die OpenCV en andere pakketten die u installeert zal huisvesten, gebruikt u eenvoudig mkvirtualenv en het onderstaande commando:
$ mkvirtualenv cv -p python3
Nu hebt u een virtuele omgeving met de naam cv
. U kunt deze op elk gewenst moment activeren via:
$ workon cv
En nu kunt u met een handomdraai OpenCV pip installeren in cv
:
$ pip install opencv-contrib-python==4.1.0.25
2019-11-21 Update: Lezers hebben gemeld dat sommige versies van OpenCV 4 zoals geïnstalleerd via pip niet goed werken op de Raspberry Pi. U kunt een "undefined symbol: __atomic_fetch_add8"
voor libatomic
fout tegenkomen wanneer u import cv2
vanuit Python als u niet de specifieke versie van OpenCV gebruikt die in het codeblok hierboven wordt genoemd.
Dat is alles wat er te doen is met PiWheels!
Ik wed dat je de PiCamera gebruikt als je beeldsensor. Je kunt de Python module installeren met het volgende commando (let wel op de aanhalingstekens):
$ pip install "picamera"
Testen van onze pip install van OpenCV
Wist je dat OpenCV’s 3.3+ een DNN module heeft die Deep Learning modellen kan draaien?
U zult misschien verbaasd zijn, maar uw versie van OpenCV kan dit nu out of the box doen, met weinig tot geen extra software.
We gaan objectdetectie in video uitvoeren met een MobileNet Single Shot Detector.
Hier is wat je eerst moet installeren (uitgaande van een cv
virtuele omgeving):
$ workon cv$ pip install imutils$ pip install "picamera" # if you're using a Raspberry Pi
Nu dubbelchecken of je alle software klaar hebt door een Python shell te openen:
$ 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>>>
De Raspberry Pi zal een andere versie van Python 3 laten zien, wat te verwachten is.
Nu is het tijd om de code te downloaden.
Gebruik zeker de “Downloads” sectie van deze blog post om de broncode + voorgetraind MobileNet SSD neuraal netwerk te downloaden.
Van daaruit voert u het volgende commando uit:
$ 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
Ik gebruik een Macbook Pro. Een framerate van 6 FPS is behoorlijk goed met een CPU op een laptop.
Raspberry Pis zijn beperkt in middelen, daarom kunnen we een paar trucs toepassen om de illusie van hogere FPS te creëren. Als je op de Raspberry Pi zit, voer dan het volgende commando uit:
$ 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
Hier heb ik de illusie van snelle 27 FPS op de Raspberry Pi gecreëerd terwijl het neurale netwerk op de achtergrond slechts in staat is om 0.9 FPS.
Hoe is dit mogelijk?
Threading en queues.
Het is een beetje geavanceerd, maar als je de originele blog post leest (voor de Raspberry Pi), zul je het proces begrijpen. Plus, je zult in staat zijn om indruk te maken op je vrienden en familie.
Waar je op moet letten als je pip gebruikt om OpenCV te installeren
Om te beginnen, niet alle Python distributies zullen een versie van OpenCV hebben die pip-installeerbaar is.
Nieuwere versies van Python en nieuwere besturingssystemen (en niet te vergeten, oudere versies die het einde van hun levensduur hebben bereikt) hebben misschien geen versie van OpenCV klaar staan in de PyPI repository omdat de open source gemeenschap nog geen kans heeft gehad om zo’n versie uit te brengen.
In die situaties kun je ofwel:
- Wachten tot de binaries voor jouw combinatie van Python en besturingssysteem zijn geüpload.
- Of wat ik zou aanraden – compileren vanaf broncode (Ubuntu, macOS, RPi).
Tweede, sommige lezers, waaronder Anaconda-gebruikers, hebben problemen gemeld bij het gebruik van GUI-functies zoals cv2.imshow
en cv2.waitKey
.
In deze scenario’s zal OpenCV een foutmelding geven dat het niet is gecompileerd met GTK of QT ondersteuning.
Eenvoudig gezegd:
- Je zult alle andere OpenCV functies kunnen gebruiken, maar je zult niet in staat zijn om een van de GUI functies te gebruiken, in het bijzonder die in de highgui module.
- De oplossing hier is om te compileren vanaf broncode (Ubuntu, macOS, RPi).
Derde, ik weet dat lezers problemen hebben gemeld bij het uitvoeren van import cv2
in hun terminals, Jupyter Notebooks, of Python shells – dit is geen probleem met de pip installatie van OpenCV.
In de meeste, maar niet alle, situaties is de fout niet gerelateerd aan uw eigenlijke installatie van OpenCV.
In plaats daarvan is het waarschijnlijker een probleem met uw begrip van een of andere combinatie van:
- De commando’s die werden uitgevoerd en hoe ze op de juiste manier te gebruiken.
- Dachten dat een commando correct werd uitgevoerd, maar in plaats daarvan resulteerde in een fout.
- Het niet kunnen benaderen van uw Python virtuele omgeving (als u er een gebruikt).
U zult uw commando’s dubbel willen controleren, de stappen herhalen, en uw uitvoer nauwkeurig onderzoeken voordat u een probleem meldt met het importeren van de cv2
bindings.
Ten slotte bevat de versie van OpenCV die via pip wordt geïnstalleerd geen “niet-vrije” algoritmen zoals SIFT, SURF, en andere gepatenteerde algoritmen. Als u geen gepatenteerde algoritmen hoeft te gebruiken, dan zit u goed. Anders raad ik u aan OpenCV vanaf de broncode te compileren via een van mijn installatie-tutorials voor uw systeem.
Samenvatting
In de tutorial van vandaag hebt u geleerd hoe u OpenCV met pip installeert op uw besturingssysteem.
In het bijzonder hebben we besproken hoe u OpenCV via pip op Ubuntu, macOS en Raspberry Pi kunt installeren.
Hoewel het installeren van OpenCV via pip de gemakkelijkste methode is om mee te beginnen, moet u er rekening mee houden dat u tegen andere problemen kunt aanlopen.
Als u fouten of problemen tegenkomt met uw pip installatie van OpenCV, raadpleeg dan de “Waar moet u op letten als u pip gebruikt om OpenCV te installeren” sectie van deze blog post.
Ik hoop dat u genoten heeft van de tutorial van vandaag!
Om op de hoogte te worden gehouden wanneer toekomstige blog posts worden gepubliceerd hier op de PyImageSearch blog, zorg ervoor dat u uw email adres invult in het formulier hieronder.