Inhoudsopgave:
- Stap 1: De kopbestanden
- Stap 2: De video vastleggen
- Stap 3: Frame vastleggen en kleur definiëren
- Stap 4: Maskeren en extraheren
- Stap 5: Eindelijk weergeven
- Stap 6: Demo
Video: Eenvoudige kleurdetectie met OpenCV - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Hoi! Vandaag ga ik een eenvoudige methode laten zien voor het detecteren van een kleur uit een live video met behulp van OpenCV en python.
In principe zal ik gewoon testen of de vereiste kleur aanwezig is in het achtergrondframe of niet en met behulp van OpenCV-modules zal ik dat gebied maskeren en tegelijkertijd het frame weergeven.
Stap 1: De kopbestanden
Nu heb ik hier twee header-bestanden gebruikt, namelijk cv2 en NumPy. In feite is cv2 de OpenCV-bibliotheek die alle c++-bestanden laadt die belangrijk zijn bij het gebruik van de opdrachten in de codes (het bevat alle definities).
En Numpy is een python-bibliotheek die essentieel is voor het opslaan van een multidimensionale array. We zullen gebruiken om de coördinaten van ons kleurengamma op te slaan.
En numpy als np helpt onze code in feite om een beetje in te korten door elke keer np te gebruiken in plaats van numpy.
Stap 2: De video vastleggen
Dit is vrij eenvoudig tijdens het gebruik van python. Hier hoeven we alleen de videorecorder in te schakelen, zodat deze kan beginnen met het opnemen van de frames.
Nu geeft de waarde in de VideoCapture de camera aan, in mijn geval is de camera aangesloten op mijn laptop, dus 0.
U kunt op dezelfde manier gaan als 1 voor de secundaire camera, enzovoort. VideoCapture maakt er het object voor.
Stap 3: Frame vastleggen en kleur definiëren
Nu moeten we hier iets doen zodat we het instantframe van de video kunnen vastleggen dat ons zal helpen de afbeelding te extraheren en we kunnen daaraan werken volgens de vereisten.
"while" -lus zal ons helpen om de lus uit te voeren volgens onze vereiste tijd. Nu wordt " _, frame = cap.read() " gebruikt om de geldigheid van het vastgelegde frame te controleren en op te slaan. "cap.read() is een booleaanse variabele en retourneert true als het frame correct wordt gelezen en als je geen frames krijgt, zal het geen enkele fout tonen, je krijgt gewoon Geen.
Nu definiëren regel 11 en regel 12 in feite het kleurbereik dat we moeten detecteren. Hiervoor heb ik blauwe kleur gebruikt.
U kunt doorgaan met elke kleur waarvoor u alleen BGR-waarden voor die specifieke kleur hoeft in te voeren. Het is beter om twee arrays te definiëren met behulp van numpy-arrays, omdat het detecteren van een bepaalde kleur in de echte wereld ons doel niet zal dienen, maar we zullen een bereik van blauwe kleuren definiëren zodat het binnen het bereik detecteert.
Hiervoor heb ik twee variabelen gedefinieerd die de lagere BGR-waarden en de bovenste BGR-waarden opslaan.
Stap 4: Maskeren en extraheren
Nu komt hier de hoofdtaak van het maskeren van het frame en het extraheren van de kleur van het frame. Ik heb de vooraf gedefinieerde opdrachten gebruikt die aanwezig zijn in de bibliotheek in OpenCV om de maskering uit te voeren. In wezen is maskeren het proces van het verwijderen van een deel van het frame, d.w.z. we zullen de pixels verwijderen waarvan de kleur-BGR-waarden niet in het gedefinieerde kleurbereik liggen en dit wordt gedaan door cv2.inRange. Daarna passen we het kleurbereik toe op de gemaskeerde afbeelding, afhankelijk van de pixelwaarden en hiervoor zullen we cv2.bitwise_and gebruiken. Het zal eenvoudig de kleuren toewijzen aan het gemaskeerde gebied, afhankelijk van de masker- en kleurbereikwaarden.
Link voor cv2. bitwise_and:
Stap 5: Eindelijk weergeven
Hier heb ik de basis cv2.imshow() gebruikt om voor elk frame als afbeelding weer te geven. Omdat ik de framegegevens heb opgeslagen in variabelen, kan ik ze ophalen in imshow(). Hier heb ik alle drie de frames weergegeven, origineel, gemaskeerd en gekleurd.
Nu moeten we de while-lus verlaten. Hiervoor kunnen we eenvoudig de cv2.wait. Key() implementeren. In feite vertelt het de wachttijd voordat het reageert. Dus als je 0 passeert, zal het oneindig wachten en 0xFF vertelt dat de architectuur 64bit is. " ord() " specificeert het teken dat, wanneer ingedrukt, het break-commando in if-blok zal uitvoeren en uit de lus zal komen.
Dan sluit cap.release() de videorecorder en cv2.destroyAllWindows() sluit alle geopende vensters.
Als je een probleem hebt, laat het me dan weten.
Link naar broncode:
Aanbevolen:
Kleurdetectie in Python met OpenCV: 8 stappen
Kleurdetectie in Python met OpenCV: Hallo! Deze instructable wordt gebruikt om te helpen bij het extraheren van een specifieke kleur uit een afbeelding in python met behulp van de openCV-bibliotheek. Als deze techniek nieuw voor u is, hoeft u zich geen zorgen te maken, aan het einde van deze handleiding kunt u uw eigen kleur programmeren
Hoe maak je een eenvoudige audioversterker binnen Rs. 100 ($ 2) met de naam Handy Speaky: 6 stappen (met afbeeldingen)
Hoe maak je een eenvoudige audioversterker binnen Rs. 100 ($ 2) genaamd Handy Speaky: in het project van vandaag laat ik je zien hoe je de eenvoudigste mini-geluidsversterker maakt op basis van LM386. Deze geluidsversterker is zeer eenvoudig te maken, bovendien is hij zeer compact, werkend met slechts één stroombron met een kleine belasting van 6-12 volt. Deze i
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
PCB-ontwerp met eenvoudige en gemakkelijke stappen: 30 stappen (met afbeeldingen)
PCB-ontwerp met eenvoudige en gemakkelijke stappen: HELLO VRIENDEN Het is een zeer nuttige en gemakkelijke tutorial voor diegenen die PCB-ontwerp willen leren, laten we beginnen
Kleurdetectie met RGB LED: 4 stappen
Kleurdetectie met RGB LED: Heb je ooit een geautomatiseerde manier gewild om de kleur van een object te detecteren? Door licht van een bepaalde kleur op het object te schijnen en te kijken hoeveel licht er wordt teruggekaatst, kun je zien welke kleur het object heeft. Als je bijvoorbeeld door rood licht schijnt