Inhoudsopgave:
Video: OpenCV-beeldclassificaties maken met Python: 7 stappen
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Haar-classificaties in python en opencv is nogal lastig maar gemakkelijke taak.
We worden vaak geconfronteerd met de problemen bij beelddetectie en classificatie. de beste oplossing is om je eigen classifier te maken. Hier leren we onze eigen beeldclassificaties te maken met een paar commando's en lange maar eenvoudige python-programma's
De classificatie vereist een groot aantal negatieve en positieve afbeeldingen. Negatieven bevatten niet het vereiste object, terwijl de positieven degene zijn die het te detecteren object bevatten.
Er zijn ongeveer 2000 negatieven en positieven nodig. Het python-programma converteert de afbeelding naar grijswaarden en een geschikte grootte, zodat classifiers de optimale tijd nodig hebben om te maken.
Stap 1: Benodigde software
U hebt de volgende software nodig voor het maken van uw eigen classifier:
1) OpenCV: de versie die ik heb gebruikt is 3.4.2. de versie is gemakkelijk beschikbaar op internet.
2) Python: De gebruikte versie is 3.6.2. Kan worden gedownload van python.org
Bovendien heb je (uiteraard) een webcam nodig.
Stap 2: De afbeeldingen downloaden
De eerste stap is het maken van een duidelijk beeld van het te classificeren object.
De grootte mag niet erg groot zijn, omdat de computer meer tijd nodig heeft om te verwerken. Ik nam de maat 50 bij 50.
Vervolgens downloaden we de negatieve en positieve afbeeldingen. Je kunt ze online vinden. Maar we gebruiken de python-code om afbeeldingen te downloaden van 'https://image-net.org'
Vervolgens converteren we de afbeeldingen naar grijswaarden en naar een normale grootte. Dit is ook geïmplementeerd in de code. De code verwijdert ook elke defecte afbeelding
Je map zou nu de objectafbeelding moeten bevatten, bijvoorbeeld watch5050-j.webp
Als de gegevensmap niet is gemaakt, doe dit dan handmatig
De python-code staat in het.py-bestand
Stap 3: Positieve voorbeelden maken in OpenCV
Ga nu naar de map opencv_createsamples en voeg alle bovengenoemde inhoud toe
ga in de opdrachtprompt naar C:\opencv342\build\x64\vc14\bin om de apps opencv_createsamples en opencv_traincascade te vinden
voer nu de volgende opdrachten uit:
opencv_createsamples -img watch5050-j.webp
Deze opdracht is voor het maken van de positieve monsters van het object 1950 om precies te zijn. En het beschrijvingsbestand info.lst van de positieve afbeeldingen zou de beschrijving zo moeten zijn 0001_0014_0045_0028_0028-j.webp
Nu bevat de map
info
map met negatieve afbeeldingen
bg.txt-bestand
lege gegevensmap
Stap 4: Positief vectorbestand maken
Maak nu het positieve vectorbestand dat het pad geeft naar de positieve afbeeldingen van het beschrijvingsbestand
Gebruik de volgende opdracht:
opencv_createsamples -info info/info.lst -num 1950 -w 20 -h 20 -vec positives.vec
Inmiddels moet de inhoud van de directory als volgt zijn:
--neg
----negimages.jpg
--opencv
--info
--gegevens
--positieven.vec
--bg.txt
--watch5050-j.webp
Stap 5: De classifier trainen
Laten we nu de haarcascade trainen en het xml-bestand maken
Gebruik de volgende opdracht:
opencv_traincascade -data data -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
stadia zijn 10 Het verhogen van de stadia vereist meer verwerking, maar de classificatie is veel efficiënter.
Nu is haarcascade gemaakt. Het duurt ongeveer twee uur om te voltooien. Open de datamap, daar vindt u cascade.xml Dit is de classifier die is gemaakt
Stap 6: De classificatie testen
De datamap bevat de bestanden zoals weergegeven in de afbeelding hierboven.
Na het maken van de classifier zien we of de classifier werkt of niet door het object_detect.py programma uit te voeren. Vergeet niet het bestand classifier.xml in de python-directory te plaatsen.
Stap 7: Speciale dank
Ik wil Sentdex hier bedanken, die een geweldige python-programmeur is.
Hij heeft een youtube-naam met de bovengenoemde naam en de video die me veel heeft geholpen heeft deze link
Het grootste deel van de code is gekopieerd van senddex. Hoewel ik veel hulp kreeg van sentdex, had ik nog steeds veel problemen. Ik wilde alleen mijn ervaring delen.
Ik hoop dat deze intructable je heeft geholpen !!! Blijf erbij voor meer.
BR
Tahir Ul Haq