Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
I classificatori Haar in Python e opencv sono un compito piuttosto complicato ma facile.
Spesso affrontiamo i problemi nel rilevamento e nella classificazione delle immagini. la soluzione migliore è creare il proprio classificatore. Qui impariamo a creare i nostri classificatori di immagini con pochi comandi e programmi Python lunghi ma semplici
La classificazione richiede un gran numero di immagini negative e positive i negativi non contengono l'oggetto richiesto mentre i positivi sono quelli che contengono l'oggetto da rilevare.
Sono richiesti circa 2000 negativi e positivi. Il programma Python converte l'immagine in scala di grigi e una dimensione adeguata in modo che i classificatori impieghino il tempo ottimale per creare.
Passaggio 1: Software necessari
Sono necessari i seguenti software per la creazione del proprio classificatore
1) OpenCV: la versione che ho usato è la 3.4.2. la versione è facilmente reperibile su internet.
2) Python: la versione utilizzata è la 3.6.2. Può essere scaricato da python.org
Inoltre è necessaria una webcam (ovviamente).
Passaggio 2: download delle immagini
Il primo passo è quello di fare un quadro chiaro dell'oggetto da classificare.
La dimensione non dovrebbe essere molto grande in quanto richiede più tempo per l'elaborazione da parte del computer. Ho preso una taglia 50 per 50.
Successivamente scarichiamo le immagini negative e positive. Li puoi trovare online. Ma usiamo il codice Python per scaricare immagini da 'https://image-net.org'
Quindi convertiamo le immagini in scala di grigi e in una dimensione normale. Questo è anche implementato nel codice. Il codice rimuove anche qualsiasi immagine difettosa
Ormai la tua directory dovrebbe contenere l'immagine dell'oggetto es watch5050-j.webp
Se la cartella dati non è stata creata, fallo manualmente
Il codice Python è fornito nel file.py
Passaggio 3: creazione di campioni positivi in OpenCV
Ora vai alla directory opencv_createsamples e aggiungi tutto il contenuto sopra menzionato
nel prompt dei comandi vai su C:\opencv342\build\x64\vc14\bin per trovare le app opencv_createsamples e opencv_traincascade
ora esegui i seguenti comandi
opencv_createsamples -img watch5050-j.webp
Questo comando serve per creare i campioni positivi dell'oggetto 1950 per l'esattezza E il file di descrizione info.lst delle immagini positive la descrizione dovrebbe essere così 0001_0014_0045_0028_0028-j.webp
Ora la cartella contiene
informazioni
cartella immagini negativa
file bg.txt
cartella dati vuota
Passaggio 4: creazione di file vettoriali positivi
Ora crea il file vettoriale positivo che fornisce il percorso alle immagini positive il file di descrizione
Usa il seguente comando
opencv_createsamples -info info/info.lst -num 1950 -w 20 -h 20 -vec positives.vec
Ormai il contenuto della directory deve essere il seguente:
--neg
----negimages.jpg
--opencv
--Informazioni
--dati
--positives.vec
--bg.txt
--watch5050-j.webp
Passaggio 5: formazione del classificatore
Ora addestriamo la cascata haar e creiamo il file xml
Usa il seguente comando
opencv_traincascade -data data -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
gli stadi sono 10 L'aumento degli stadi richiede più elaborazione ma il classificatore è molto più efficiente.
Ora haarcascadeècreato Ci vogliono circa due ore per completarlo Apri la cartella dei dati lì troverai cascade.xml Questo èil classificatore cheèstato creato
Passaggio 6: test del classificatore
La cartella dei dati contiene i file come mostrato nell'immagine sopra.
Dopo la creazione del classificatore vediamo se il classificatore funziona o meno eseguendo il programma object_detect.py. Non dimenticare di inserire il file classifier.xml nella directory python.
Passaggio 7: ringraziamenti speciali
Vorrei ringraziare Sentdex qui che è un grande programmatore Python.
Ha un nome youtube con il nome sopra citato e il video che mi ha aiutato molto ha questo link
La maggior parte del codice è stata copiata da senddex. Sebbene abbia ricevuto molto aiuto da senddex, ho dovuto affrontare ancora molti problemi. Volevo solo condividere la mia esperienza.
Spero che questo intrusivo ti abbia aiutato!!! Resta sintonizzato per saperne di più.
BR
Tahir Ul Haq