Top 10 idei și subiecte interesante pentru proiecte OpenCV pentru cei proaspăt și cu experiență [2022]

Publicat: 2021-05-27

OpenCV sau Open Source Computer Vision Library este o bibliotecă puternică de învățare automată și bazată pe inteligență artificială, folosită pentru a dezvolta și rezolva problemele de vedere pe computer. Viziunea computerizată include antrenarea unui computer pentru a înțelege și înțelege lumea vizuală, a identifica elementele și a răspunde la acestea folosind modele de învățare profundă. Companiile de astăzi din întreaga lume îl folosesc în manipularea imaginilor, procesarea, detectarea feței, recunoașterea vocii, urmărirea mișcării și detectarea obiectelor.

Companii precum Google, Facebook, Microsoft și Intel implementează deja OpenCV pentru a dezvolta aplicații de viziune computerizată. Mark Zuckerberg, într-un interviu din 2015, a remarcat: „Dacă suntem capabili să construim computere care să înțeleagă ce este într-o imagine și să spunem unei persoane nevăzătoare care altfel nu ar putea vedea acea imagine, ar fi și asta destul de uimitor”.

Astăzi, tehnologia OpenCV s-a dovedit a fi o descoperire pentru persoanele nevăzătoare sau cu deficiențe de vedere. Le permite să se familiarizeze cu un mediu necunoscut și să recunoască obiectele și oamenii din apropiere pentru a depăși această deficiență de vedere. Viziunea computerizată este, de asemenea, tehnologia din spatele mașinilor cu conducere autonomă și a dispozitivelor inteligente cu senzori de mișcare.

Dacă vă gândiți la o carieră în viziunea computerizată, iată zece proiecte interesante de CV deschise care vă vor ajuta să obțineți experiență în lumea reală. Asadar, haideti sa începem!

Cuprins

Top 10 proiecte de CV deschise de verificat în 2022

Proiectul 1: Detectarea pneumoniei folosind EdgeML

Acest proiect OpenCV are ca scop implementarea unui software de detectare a pneumoniei bazat pe AI pe Raspberry Pi. Utilizează sistemul Edge Machine Learning pentru a converti un Raspberry Pi cu o cameră într-un clasificator de pneumonie folosind multi-containere ale Balena.

Un al doilea container este adăugat la Balena care rulează motorul de inferență Edge Impulse WebAssembly într-un server Node.js. Ambele containere comunică prin WebSockets pentru a permite BalenaCam să transmită în direct fiecare secundă a fluxului de la camera dvs. de pe pagina web.

Software-ul și instrumentele folosite în proiect includ OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code și Docker. Browserele web care acceptă Balena Cam sunt Chrome, Safari, Firefox și Edge.

Puteți verifica proiectul aici .

Proiectul 2: Senzor de mișcare alimentat cu OpenCV pentru SmartThings de la Samsung

În primul rând, aveți nevoie de un Raspberry Pi 3 cu un PiCam funcțional care are OpenCV instalat anterior. Acest proiect își propune să creeze un senzor de mișcare personalizat pentru SmartThings alimentat de viziune computerizată și să detecteze fețe. Datele colectate sunt trimise către SmartThings prin LAN – UPnP.

Pentru a face acest lucru, creăm un handler de dispozitiv pentru SmartThings și îl programăm. Apoi folosim un script Python pentru a accesa imaginile camerei și pentru a detecta fețele și pentru a asocia Raspberry Pi pentru a fi descoperit de SmartThings. De asemenea, trebuie să instalați imutils pe care le puteți sursa din GitHub.

Consultați codul sursă al proiectului aici .

Proiectul 3: Fotografie computațională

Acest proiect este de a crea panorame, de a elimina zgomotul și obiectele nedorite din imagini și de a crește vizibilitatea fotografiilor făcute clic în condiții de lumină slabă. Fotografia computațională implică algoritmi de eliminare a zgomotului pentru a elimina zgomotul alb Gaussian și distorsiunea, restaurarea fotografiilor pentru a filtra liniile, obiectele și elementele nedorite și recunoașterea plăcuței de înmatriculare pentru a detecta plăcuța de înmatriculare prin recunoașterea caracterelor.

Proiect 4: Creați un filigran pe imagini utilizând OpenCV

Acest proiect este un tutorial despre cum puteți crea un filigran — semnătură, logo sau ștampilă pentru a preveni utilizarea greșită sau încălcarea drepturilor de autor — pe o imagine folosind biblioteca deschisă de computer vision. Vă permite să filigranați o imagine originală folosind atât imaginea, cât și textul, folosind biblioteca OpenCV a lui Python. Pentru a crea un filigran folosind o imagine, trebuie să definiți funcția transparentă și funcția de adăugare a imaginii. În cazul textului, importăm funcția PIL și apoi reglam poziția filigranului textului.

Puteți căuta proiectul aici .

Proiectul 5: Găsirea lui Waldo

Acesta este un proiect de detectare a obiectelor pentru a detecta Waldo într-o imagine prin antrenarea unui AI pentru a-l recunoaște pe Waldo dintr-o serie de imagini diferite. Apoi folosim o abordare statică pentru a găsi Waldo prin potrivirea pixelilor. Acest lucru este important deoarece, dacă utilizați o imagine șablon, potrivirea statică se va aplica numai pentru imaginea respectivă și nu pentru o nouă imagine a lui Waldo.

Calculăm coeficientul de corelație pentru a efectua potrivirea șablonului, care ia ca intrare șablonul Waldo și îl glisează pixel cu pixel pe imaginea în care Waldo urmează să fie detectat. Coeficientul de corelație arată dacă locațiile pixelilor sunt o potrivire „bună” sau „rea”.

Puteți verifica proiectul aici .

Proiectul 6: Autoturisme care se conduc singure

Acest proiect folosește manipularea și procesarea imaginilor folosind OpenCV pentru a crea mașini autonome. Pentru a pregăti o mașină să conducă singură, trebuie să o familiarizăm cu benzile de pe stradă, să le găsim și să ne concentrăm pe a rămâne pe ele. Aceasta înseamnă că un model de învățare automată necesită experiență în identificarea regiunii de interes prin detectarea marginilor și liniile care se transformă pentru a separa pixelii de o imagine care reprezintă străzile. Acest lucru necesită, de asemenea, mascarea și calcularea punctelor medii de pantă.

Iată codul sursă pentru identificarea regiunii de interes:

import numpy ca np

din matplotlib import pyplot ca plt

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

În [8]:

imagine.forma

Ieșit[8]:

(830, 1245, 3)

În [11]:

x, y = imagine.shape[:2]

În [3]:

înălțime, lățime = imagine.shape[:2]

# Pentru a obține coordonatele pixelilor de pornire (stânga sus a dreptunghiului de decupare)

start_row, start_col = int(înălțime * .25), int(lățime * .25)

# Pentru a obține coordonatele pixelilor de sfârșit (dreapta jos)

end_row, end_col = int(înălțime * .75), int(lățimea * .75)

# Folosind indexarea pentru a decupa secțiunea de imagine pe care o dorim

cropped = imagine[start_row:end_row , start_col:end_col]

În [6]:

rând, col = 1, 2

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

fig.tight_layout()

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

axs[0].set_title('Imagine originală')

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

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

axs[1].set_title('Imagine decupată')

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

plt.show()

Vezi proiectul aici .

Proiectul 7: Recunoașterea feței și a vocii pentru persoanele cu deficiențe de vedere

Acest proiect are ca scop să ajute persoanele cu deficiențe de vedere prin conversia intrării faciale în ieșirea vocală folosind un Raspberry Pi 2 Model B și un Modul pentru cameră Raspberry Pi. Este unul dintre cele mai populare proiecte de CV deschise în 2022. Software-ul permite persoanelor nevăzătoare sau cu dizabilități vizuale să detecteze semne, texte sau persoane într-un mediu necunoscut, să-și navigheze în drum fără asistență. Printre alte cerințe pentru proiect sunt OpenCV și Python pentru a efectua recunoașterea feței, iar recunoașterea vocii este realizată folosind GNU Octave.

Puteți verifica codul aici .

Proiectul 8: Smart Attendance Model

Un sistem inteligent de prezență este un instrument la îndemână pentru modelele online de educație, cum ar fi ZoomApp. Vă ajută să urmăriți elevii care participă la cursul dvs. Zoom, monitorizându-le prezența în timp real. Tot ceea ce trebuie făcut este să obțineți o captură de ecran de la student cu data inclusă și să o încărcați într-un fișier Excel.

Puteți găsi un tutorial pentru acest proiect de CV deschis aici .

Proiectul 9: Schimbarea feței cu OpenCV

Aplicațiile și filtrele de schimbare a feței sunt în tendințe pe rețelele sociale de ceva vreme. De la apariția tinerilor și bătrâni până la conversia imaginilor statice în imagini în mișcare, Instagram, Snapchat și FaceApp au trecut cu toții. Aplicațiile de schimbare a feței sunt relativ ușor de creat folosind OpenCV și Python.

Pașii includ plasarea unei imagini sursă pe o imagine de destinație cu ajutorul unui triunghi format folosind detectorul de reper dlib.

Vezi proiectul aici .

Proiectul 10: Detectarea contururilor și numărarea formelor

Proiectul detectează contururile sau contururile unei forme date pentru a determina tipul de formă pe care îl are un obiect. De exemplu, dacă o imagine are capace de sticle, puteți utiliza forma rotundă pentru a determina câte capace de sticle sunt în imagine.

Iată codul sursă pentru a face acest lucru:

import numpy ca np

din matplotlib import pyplot ca plt

În [2]:

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

gri = cv2.cvtColor(imagine, cv2.COLOR_BGR2GRAY)

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

plt.title('capsule de sticla'); plt.show()

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

Ieșit[2]:

Adevărat

În [3]:

blur = cv2.medianBlur(gri, 5)

cercuri = cv2.HoughCircles(blur, cv2.Hough_GRADIENT, 1,5, 10)

pentru i în cercuri[0,:]:

# desenați cercul exterior

cv2.cercle(imagine,(i[0], i[1]), i[2], (255, 0, 0), 2)

# desenați centrul cercului

cv2.cercle(imagine, (i[0], i[1]), 2, (0, 255, 0), 5)

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

plt.title('Cercuri detectate'); plt.show()

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

Ieșit[3]:

Adevărat

În [ ]:

Pe de altă parte, numărarea formelor implică aplicarea de algoritmi pentru a segmenta imagini și a grupa date pentru a determina punctele de interes dintr-o imagine. Folosim contururi binare și aproximative cu ajutorul funcției approxPolyDP.

Puteți consulta acest proiect de CV deschis aici .

Gânduri finale

Computer Vision vă permite să dezvoltați o gamă largă de aplicații utile, cum ar fi transformarea imaginii, translația, detectarea contururilor, segmentarea imaginii, detectarea obiectelor, urmărirea obiectelor și analiza mișcării.

De asemenea, este folosit în Realitatea Augmentată (AR) prin învățarea localizării fețelor, detectarea formelor etc., pentru a recunoaște obiecte și fețe. De asemenea, puteți crea proiecte Open CV interesante folosind învățarea automată simplă, cum ar fi un cititor de carduri de credit, un detector de cifre scrise de mână sau un cititor de fețe.

Cu toate acestea, acest lucru necesită o înțelegere a științei datelor și a învățării automate, în special a învățării profunde. Dacă doriți să urmați o carieră ca inginer ML, cercetător de date sau inginer de învățare profundă, vă recomandăm să obțineți un program de certificat avansat în învățarea automată și învățarea profundă .

Acest curs vă va ajuta să vă familiarizați bine cu conceptele de statistică, regresie, algoritmi de grupare, rețele neuronale, detectarea obiectelor și recunoașterea gesturilor. Nu doar atât, vă va ajuta să vă dezvoltați expertiză în OpenCV, Python, TensorFlow, MySQL, Keras, Excel și NumPy, printre alte instrumente și biblioteci de programare, și vă va ajuta să vă evidențiați în mulțime.

Ce este OpenCV?

OpenCV este o bibliotecă open-source pentru procesarea imaginilor și viziunea computerizată, întreținută de Intel și susținută acum de o comunitate de dezvoltatori. Fiind open source, OpenCV folosește puterea întregii comunități de dezvoltatori. Biblioteca este concepută pentru a fi optimizată pentru aplicații în timp real, cum ar fi recunoașterea obiectelor, supravegherea video, interacțiunea om-mașină, medical și alte domenii conexe.

Ce este detectarea obiectelor?

Detectarea obiectelor este procesul de localizare a obiectelor în imagini sau videoclipuri care nu sunt ușor de detectat. Această problemă este de obicei formulată ca o instanță de clasificare. Având în vedere o imagine, dorim să clasificăm diferitele sale obiecte (cum ar fi mașini, pietoni și clădiri) împreună cu casetele lor de delimitare care, la rândul lor, ne-ar oferi locația lor. Detectarea obiectelor este sarcina de a identifica obiectele dintr-o imagine. Scopul detectării obiectelor este de a găsi locația obiectelor într-o imagine (adică de a le localiza) și de a estima dimensiunea și forma acestora. Detectarea obiectelor este o problemă dificilă, deoarece obiectele sunt adesea parțial ocluse și uneori au o varietate enormă de apariții, precum și deformații nerigide în imagine.

Care este cel mai precis algoritm de detectare a obiectelor?

Există mulți algoritmi de detectare a obiectelor și niciunul dintre ei nu este 100% precis. Algoritmii de detectare a obiectelor se confruntă cu o problemă de supraadaptare a datelor. De fapt, unii cercetători în viziunea computerizată susțin că algoritmii de detectare a obiectelor nu pot fi 100% precisi. Dar, există mulți algoritmi care oferă rezultate precise pentru un anumit set de date. Dacă vă puteți permite o mașină GPU, vă recomandăm să utilizați implementarea SVM bazată pe OpenCV pentru detectarea obiectelor. Este foarte precis, rapid și funcționează pe un set de date foarte mare. Cu toate acestea, nu se descurcă foarte bine cu ocluzia. Dacă doriți să construiți un detector de față, alegeți implementarea clasificatorului în cascadă Haar în OpenCV.