Le 10 migliori idee e argomenti di progetto OpenCV per principianti ed esperti [2022]

Pubblicato: 2021-05-27

OpenCV o Open Source Computer Vision Library è una potente libreria basata sull'apprendimento automatico e sull'intelligenza artificiale utilizzata per sviluppare e risolvere problemi di visione artificiale. La visione artificiale include la formazione di un computer per comprendere e comprendere il mondo visivo, identificare gli elementi e rispondere ad essi utilizzando modelli di deep learning. Le aziende di oggi in tutto il mondo lo sfruttano nella manipolazione delle immagini, nell'elaborazione, nel rilevamento dei volti, nel riconoscimento vocale, nel rilevamento del movimento e nel rilevamento di oggetti.

Aziende come Google, Facebook, Microsoft e Intel implementano già OpenCV per sviluppare applicazioni di visione artificiale. Mark Zuckerberg, in un'intervista del 2015, aveva osservato: "Se siamo in grado di costruire computer in grado di capire cosa c'è in un'immagine e dirlo a una persona cieca che altrimenti non potrebbe vedere quell'immagine, sarebbe anche sorprendente".

Oggi, la tecnologia OpenCV si è rivelata una svolta per le persone non vedenti o ipovedenti. Consente loro di familiarizzare con un ambiente sconosciuto e riconoscere oggetti e persone nelle vicinanze per superare questo disturbo della vista. La visione artificiale è anche la tecnologia alla base delle auto a guida autonoma e dei dispositivi con sensori di movimento intelligenti.

Se stai cercando una carriera nella visione artificiale, ecco dieci interessanti progetti di cv aperti per aiutarti ad acquisire esperienza nel mondo reale. Quindi iniziamo!

Sommario

I 10 migliori progetti di CV aperti da verificare nel 2022

Progetto 1: rilevamento della polmonite utilizzando EdgeML

Questo progetto OpenCV mira a distribuire un software di rilevamento della polmonite basato sull'intelligenza artificiale sul tuo Raspberry Pi. Utilizza il sistema Edge Machine Learning per convertire un Raspberry Pi con una fotocamera in un classificatore di polmonite utilizzando i multi-contenitori di Balena.

Un secondo contenitore viene aggiunto a Balena che esegue il motore di inferenza Edge Impulse WebAssembly all'interno di un server Node.js. Entrambi i contenitori comunicano tramite WebSocket per consentire a BalenaCam di trasmettere in streaming ogni secondo del feed dalla videocamera sulla pagina Web.

I software e gli strumenti utilizzati nel progetto includono OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code e Docker. I browser Web che supportano Balena Cam sono Chrome, Safari, Firefox ed Edge.

Puoi dare un'occhiata al progetto qui .

Progetto 2: sensore di movimento alimentato da OpenCV per SmartThings di Samsung

Innanzitutto, è necessario un Raspberry Pi 3 con una PiCam funzionante su cui è installato OpenCV in precedenza. Questo progetto mira a creare un sensore di movimento personalizzato per SmartThings alimentato dalla visione artificiale e rilevare i volti. I dati raccolti vengono inviati a SmartThings su LAN – UPnP.

Per fare ciò, creiamo un gestore di dispositivo per SmartThings e lo programmiamo. Usiamo quindi uno script Python per accedere alle immagini della fotocamera, rilevare i volti e accoppiare il Raspberry Pi per essere scoperto da SmartThings. Devi anche installare imutils che puoi reperire da GitHub.

Scopri qui il codice sorgente del progetto .

Progetto 3: Fotografia computazionale

Questo progetto consiste nel creare panorami, eliminare il rumore e gli oggetti indesiderati dalle immagini e aumentare la visibilità delle fotografie scattate in condizioni di scarsa illuminazione. La fotografia computazionale prevede algoritmi di denoising delle foto per rimuovere il rumore bianco e la distorsione gaussiana, il ripristino della foto per filtrare linee, oggetti ed elementi indesiderati e il riconoscimento della targa per rilevare la targa riconoscendo i caratteri.

Progetto 4: crea una filigrana sulle immagini utilizzando OpenCV

Questo progetto è un tutorial su come creare una filigrana (firma, logo o watermark per prevenire l'uso improprio o la violazione dei diritti d'autore) su un'immagine utilizzando la libreria di visione artificiale. Ti consente di filigranare un'immagine originale utilizzando sia l'immagine che il testo utilizzando la libreria OpenCV di Python. Per creare una filigrana utilizzando un'immagine, è necessario definire la funzione trasparente e la funzione di aggiunta di immagini. Nel caso del testo, importiamo la funzione PIL e quindi regoliamo la posizione della filigrana del testo.

Puoi cercare il progetto qui .

Progetto 5: Alla ricerca di Waldo

Questo è un progetto di rilevamento di oggetti per rilevare Waldo in un'immagine addestrando un'IA a riconoscere Waldo da una serie di immagini diverse. Utilizziamo quindi un approccio statico per trovare Waldo in base alla corrispondenza dei pixel. Questo è importante perché se utilizzi un'immagine modello, la corrispondenza statica si applicherà solo a quella particolare immagine e non a una nuova immagine di Waldo.

Calcoliamo il coefficiente di correlazione per eseguire la corrispondenza del modello, che prende come input il modello waldo e lo fa scorrere pixel per pixel sull'immagine in cui deve essere rilevato Waldo. Il coefficiente di correlazione mostra se le posizioni dei pixel corrispondono a "buone" o "cattive".

Puoi dare un'occhiata al progetto qui .

Progetto 6: Auto a guida autonoma

Questo progetto utilizza la manipolazione e l'elaborazione delle immagini utilizzando OpenCV per la creazione di auto a guida autonoma. Per addestrare un'auto a guidare da sola, dobbiamo familiarizzare con le corsie stradali, trovarle e concentrarci sul rimanere su di esse. Ciò significa che un modello di apprendimento automatico richiede esperienza nell'identificazione della regione di interesse mediante il rilevamento dei bordi astuti e le linee di hough si trasformano per separare i pixel da un'immagine che rappresenta le corsie stradali. Ciò richiede anche il mascheramento e il calcolo dei punti di pendenza media.

Ecco il codice sorgente per identificare la regione di interesse:

importa numpy come np

da matplotlib import pyplot come plt

immagine = cv2.imread('../../images/input.jpg')

In [8]:

immagine.forma

Fuori[8]:

(830, 1245, 3)

In [11]:

x, y = immagine.forma[:2]

In [3]:

altezza, larghezza = immagine.forma[:2]

# Per ottenere le coordinate pixel iniziali (in alto a sinistra del rettangolo di ritaglio)

riga_inizio, col_inizio = int(altezza * .25), int(larghezza * .25)

# Per ottenere le coordinate dei pixel finali (in basso a destra)

riga_fine, col_fine = int(altezza * .75), int(larghezza * .75)

# Utilizzo dell'indicizzazione per ritagliare la sezione dell'immagine che desideriamo

ritagliato = immagine[start_row:end_row , start_col:end_col]

In [6]:

riga, col = 1, 2

fig, axs = plt.subplots(row, col, figsize=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

axs[0].set_title('Immagine originale')

cv2.imwrite('original_image.png', immagine)

axs[1].imshow(cv2.cvtColor(ritagliato, cv2.COLOR_BGR2RGB))

axs[1].set_title('Immagine ritagliata')

cv2.imwrite('cropped_image.png', ritagliato)

plt.show()

Scopri il progetto qui .

Progetto 7: Riconoscimento facciale e vocale per non vedenti

Questo progetto ha lo scopo di aiutare le persone ipovedenti convertendo l'input facciale in output vocale utilizzando un Raspberry Pi 2 Model B e un Raspberry Pi Camera Module. È uno dei progetti cv aperti più popolari nel 2022. Il software consente alle persone non vedenti o ipovedenti di rilevare segni, testi o persone in un ambiente sconosciuto, navigare senza assistenza. Tra gli altri requisiti per il progetto ci sono OpenCV e Python per condurre il riconoscimento facciale e il riconoscimento vocale viene ottenuto utilizzando GNU Octave.

Puoi controllare il codice qui .

Progetto 8: Modello di partecipazione intelligente

Un sistema di presenza intelligente è uno strumento utile per modelli di istruzione online come ZoomApp. Ti aiuta a tenere traccia degli studenti che frequentano la tua lezione Zoom monitorando la loro presenza in tempo reale. Tutto quello che devi fare è ottenere uno screenshot dello studente con la data inclusa e caricarlo su un file excel.

Puoi trovare un tutorial per questo progetto cv aperto qui .

Progetto 9: scambio di volti con OpenCV

Le applicazioni e i filtri per lo scambio di volti sono di tendenza sui social media ormai da tempo. Dall'apparire giovani e meno giovani alla conversione di immagini fisse in immagini in movimento, artisti del calibro di Instagram, Snapchat e FaceApp sono tutti saltati sul carro. Le app per lo scambio di volti sono relativamente facili da creare utilizzando OpenCV e Python.

I passaggi includono il posizionamento di un'immagine sorgente su un'immagine di destinazione con l'aiuto di un triangolo formato utilizzando il rilevatore di punti di riferimento dlib.

Scopri il progetto qui .

Progetto 10: rilevamento dei contorni e conteggio delle forme

Il progetto rileva i contorni o i contorni di una determinata forma per determinare il tipo di forma che ha un oggetto. Ad esempio, se un'immagine ha tappi di bottiglia, puoi utilizzare la forma rotonda per determinare quanti tappi di bottiglia ci sono nell'immagine.

Ecco il codice sorgente per farlo:

importa numpy come np

da matplotlib import pyplot come plt

In 2]:

image = cv2.imread('../../images/bottlecaps.jpg')

grigio = cv2.cvtColor(immagine, cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(grigio, cv2.COLOR_BGR2RGB))

plt.title('tappi di bottiglia'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', grigio)

Fuori[2]:

Vero

In [3]:

sfocatura = cv2.medianBlur(grigio, 5)

cerchi = cv2.HoughCircles(sfocatura, cv2.HOUGH_GRADIENT, 1.5, 10)

per i in cerchi[0,:]:

# disegna il cerchio esterno

cv2.circle(immagine,(i[0], i[1]), i[2], (255, 0, 0), 2)

# disegna il centro del cerchio

cv2.circle(immagine, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(immagine, cv2.COLOR_BGR2RGB))

plt.title('Cerchie rilevate'); plt.show()

cv2.imwrite('detected_circles.jpg', immagine)

Fuori[3]:

Vero

Nel [ ]:

D'altra parte, il conteggio delle forme implica l'applicazione di algoritmi per segmentare le immagini e raggruppare i dati per determinare i punti di interesse in un'immagine. Utilizziamo contorni binari e approssimati con l'aiuto della funzione approxPolyDP.

Puoi dare un'occhiata a questo progetto cv aperto qui .

Pensieri finali

Computer Vision consente di sviluppare un'ampia gamma di applicazioni utili come la trasformazione delle immagini, la traduzione, il rilevamento dei contorni, la segmentazione delle immagini, il rilevamento degli oggetti, il tracciamento degli oggetti e l'analisi del movimento.

Viene anche utilizzato in Realtà Aumentata (AR) imparando a localizzare volti, rilevare forme, ecc., a riconoscere oggetti e volti. Puoi anche creare interessanti progetti Open CV utilizzando un semplice apprendimento automatico come un lettore di carte di credito, un rilevatore di cifre scritte a mano o un lettore di volti.

Tuttavia, ciò richiede una comprensione della scienza dei dati e dell'apprendimento automatico, in particolare il deep learning. Se stai cercando di intraprendere una carriera come Ingegnere ML, Data Scientist o Deep Learning Engineer, ti consigliamo di acquisire un programma di certificazione avanzato in Machine Learning e Deep Learning .

Questo corso ti aiuterà a familiarizzare con i concetti di statistica, regressione, algoritmi di clustering, reti neurali, rilevamento di oggetti e riconoscimento dei gesti. Non solo, ti aiuterà a sviluppare competenze in OpenCV, Python, TensorFlow, MySQL, Keras, Excel e NumPy, tra gli altri strumenti di programmazione e librerie, e ti aiuterà a distinguerti dalla massa.

Cos'è OpenCV?

OpenCV è una libreria open source per l'elaborazione di immagini e la visione artificiale, gestita da Intel e ora supportata da una comunità di sviluppatori. Essendo open source, OpenCV sfrutta la potenza dell'intera comunità di sviluppatori. La libreria è progettata per essere ottimizzata per applicazioni in tempo reale, come riconoscimento di oggetti, videosorveglianza, interazione uomo-macchina, medicina e altri campi correlati.

Che cos'è il rilevamento degli oggetti?

Il rilevamento di oggetti è il processo di localizzazione di oggetti in immagini o video che non sono banalmente facili da rilevare. Questo problema è solitamente formulato come un'istanza di classificazione. Data un'immagine, vogliamo classificare i suoi vari oggetti (come automobili, pedoni ed edifici) insieme ai loro riquadri di delimitazione che a loro volta ci darebbero la loro posizione. Il rilevamento degli oggetti è il compito di identificare gli oggetti in un'immagine. L'obiettivo del rilevamento degli oggetti è trovare la posizione degli oggetti in un'immagine (cioè localizzarli) e stimarne le dimensioni e la forma. Il rilevamento degli oggetti è un problema impegnativo perché gli oggetti sono spesso parzialmente occlusi e talvolta hanno un'enorme varietà di aspetti, nonché deformazioni non rigide nell'immagine.

Qual è l'algoritmo di rilevamento degli oggetti più accurato?

Esistono molti algoritmi di rilevamento degli oggetti e nessuno di questi è accurato al 100%. Gli algoritmi di rilevamento degli oggetti affrontano il problema del sovraadattamento dei dati. In effetti, alcuni ricercatori di computer vision affermano che gli algoritmi di rilevamento degli oggetti non possono essere accurati al 100%. Tuttavia, esistono molti algoritmi che forniscono risultati accurati per un determinato set di dati. Se puoi permetterti una macchina GPU, ti consigliamo di utilizzare l'implementazione SVM basata su OpenCV per il rilevamento degli oggetti. È molto preciso, veloce e funziona su set di dati molto grandi. Tuttavia, non gestisce molto bene l'occlusione. Se vuoi costruire un rilevatore facciale, scegli l'implementazione del classificatore a cascata Haar in OpenCV.