Top 10 ekscytujących pomysłów i tematów na projekty OpenCV dla świeżo upieczonych i doświadczonych [2022]

Opublikowany: 2021-05-27

OpenCV lub Open Source Computer Vision Library to potężna uczenie maszynowe i biblioteka oparta na sztucznej inteligencji służąca do opracowywania i rozwiązywania problemów z widzeniem komputerowym. Wizja komputerowa obejmuje szkolenie komputera w zakresie rozumienia i rozumienia świata wizualnego, identyfikowania elementów i reagowania na nie za pomocą modeli uczenia głębokiego. Dzisiejsze firmy na całym świecie wykorzystują go w manipulacji obrazem, przetwarzaniu, wykrywaniu twarzy, rozpoznawaniu głosu, śledzeniu ruchu i wykrywaniu obiektów.

Firmy takie jak Google, Facebook, Microsoft i Intel już wdrażają OpenCV do opracowywania aplikacji widzenia komputerowego. Mark Zuckerberg w wywiadzie z 2015 r . zauważył: „Gdybyśmy byli w stanie zbudować komputery, które potrafiłyby zrozumieć, co jest na obrazie i powiedzieć osobie niewidomej, która inaczej nie mogłaby zobaczyć tego obrazu, byłoby to również całkiem niesamowite”.

Dzisiaj technologia OpenCV okazała się przełomem dla osób niewidomych lub niedowidzących. Pozwala im zapoznać się z nieznanym środowiskiem oraz rozpoznawać przedmioty i osoby znajdujące się w pobliżu, aby przezwyciężyć tę wadę wzroku. Widzenie komputerowe to także technologia stojąca za samochodami autonomicznymi i inteligentnymi czujnikami ruchu.

Jeśli planujesz karierę w dziedzinie wizji komputerowej, oto dziesięć interesujących projektów otwartego CV, które pomogą Ci zdobyć doświadczenie w świecie rzeczywistym. Więc zacznijmy!

Spis treści

10 najlepszych otwartych projektów CV do sprawdzenia w 2022 r.

Projekt 1: Wykrywanie zapalenia płuc za pomocą EdgeML

Ten projekt OpenCV ma na celu wdrożenie oprogramowania do wykrywania zapalenia płuc opartego na sztucznej inteligencji na Twoim Raspberry Pi. Wykorzystuje system Edge Machine Learning do przekształcenia Raspberry Pi z kamerą w klasyfikator zapalenia płuc przy użyciu wielu pojemników Balena.

Do Baleny zostaje dodany drugi kontener, który uruchamia silnik wnioskowania Edge Impulse WebAssembly na serwerze Node.js. Oba kontenery komunikują się przez WebSockets, aby umożliwić BalenaCam strumieniowanie na żywo w każdej sekundzie strumienia z kamery na stronie internetowej.

Oprogramowanie i narzędzia wykorzystane w projekcie to OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code i Docker. Przeglądarki internetowe obsługujące Balena Cam to Chrome, Safari, Firefox i Edge.

Możesz sprawdzić projekt tutaj .

Projekt 2: Czujnik ruchu oparty na OpenCV dla Samsung SmartThings

Po pierwsze, potrzebujesz Raspberry Pi 3 z działającą kamerą PiCam, na której wcześniej zainstalowano OpenCV. Ten projekt ma na celu stworzenie niestandardowego czujnika ruchu dla SmartThings zasilanego przez widzenie komputerowe i wykrywanie twarzy. Zebrane dane są przesyłane do SmartThings przez sieć LAN – UPnP.

W tym celu tworzymy program obsługi urządzenia dla SmartThings i programujemy go. Następnie używamy skryptu Pythona, aby uzyskać dostęp do obrazów z kamer i wykrywać twarze oraz sparować Raspberry Pi, aby mógł zostać wykryty przez SmartThings. Musisz także zainstalować imutils , które możesz pobrać z GitHub.

Sprawdź kod źródłowy projektu tutaj .

Projekt 3: Fotografia obliczeniowa

Ten projekt ma na celu tworzenie panoram, eliminację szumów i niechcianych obiektów z obrazów oraz zwiększenie widoczności zdjęć klikanych w słabym świetle. Fotografia obliczeniowa obejmuje algorytmy odszumiania zdjęć w celu usunięcia białego szumu i zniekształceń Gaussa, przywracania zdjęć linii filtrów, obiektów i niechcianych elementów oraz rozpoznawania tablic rejestracyjnych w celu wykrycia tablicy rejestracyjnej poprzez rozpoznawanie znaków.

Projekt 4: Utwórz znak wodny na obrazach za pomocą OpenCV

Ten projekt to samouczek dotyczący tworzenia znaku wodnego — podpisu, logo lub stempla wodnego, aby zapobiec niewłaściwemu użyciu lub naruszeniu praw autorskich — na obrazie przy użyciu otwartej biblioteki obrazów komputerowych. Pozwala na znak wodny oryginalnego obrazu przy użyciu zarówno obrazu, jak i tekstu przy użyciu biblioteki OpenCV Pythona. Aby utworzyć znak wodny za pomocą obrazu, musisz zdefiniować funkcję przezroczystości i funkcję dodawania obrazu. W przypadku tekstu importujemy funkcję PIL, a następnie dopasowujemy położenie znaku wodnego tekstu.

Możesz sprawdzić projekt tutaj .

Projekt 5: Odnalezienie Waldo

Jest to projekt wykrywania obiektów do wykrywania Waldo na obrazie poprzez szkolenie sztucznej inteligencji w rozpoznawaniu Waldo z serii różnych obrazów. Następnie stosujemy podejście statyczne, aby znaleźć Waldo przez dopasowanie pikseli. Jest to ważne, ponieważ jeśli użyjesz obrazu szablonu, statyczne dopasowanie będzie dotyczyć tylko tego konkretnego obrazu, a nie nowego obrazu Waldo.

Obliczamy współczynnik korelacji, aby przeprowadzić dopasowanie szablonu, który przyjmuje jako dane wejściowe szablon Waldo i przesuwa go piksel po pikselu przez obraz, na którym ma zostać wykryty Waldo. Współczynnik korelacji pokazuje, czy lokalizacje pikseli są „dobrym” czy „złym” dopasowaniem.

Możesz sprawdzić projekt tutaj .

Projekt 6: Samojezdne samochody

Ten projekt wykorzystuje obróbkę i przetwarzanie obrazu przy użyciu OpenCV do tworzenia autonomicznych samochodów. Aby wyszkolić samochód do samodzielnej jazdy, musimy zapoznać go z pasami ulicy, odnaleźć je i skupić się na utrzymaniu się na nich. Oznacza to, że model uczenia maszynowego wymaga specjalistycznej wiedzy w identyfikowaniu obszaru zainteresowania przez wykrywanie ostrych krawędzi i transformację ostrych linii, aby oddzielić piksele od obrazu reprezentującego pasy ulicy. Wymaga to również maskowania i obliczania średnich punktów nachylenia.

Oto kod źródłowy do identyfikacji interesującego regionu:

importuj numer jako np

z matplotlib importuj pyplot jako plt

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

W [8]:

obraz.kształt

Out[8]:

(830, 1245, 3)

W [11]:

x, y = obraz.kształt[:2]

W [3]:

wysokość, szerokość = obraz.kształt[:2]

# Aby uzyskać początkowe współrzędne pikseli (u góry po lewej stronie prostokąta przycinania)

wiersz_początku, kolumna_początkowa = int(wysokość * .25), int(szerokość * .25)

# Aby uzyskać końcowe współrzędne piksela (na dole po prawej)

end_row, end_col = int(wysokość * 0,75), int(szerokość * 0,75)

# Używanie indeksowania do wycinania żądanej części obrazu

przycięte = obraz[start_row:end_row , start_col:end_col]

W [6]:

wiersz, kol. = 1, 2

fig, axs = plt.subplots(wiersz, kol, figsize=(15, 10))

fig.tight_layout()

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

axs[0].set_title('Oryginalny obraz')

cv2.imwrite('oryginalny_obraz.png', obraz)

axs[1].imshow(cv2.cvtColor(przycięte, cv2.COLOR_BGR2RGB))

axs[1].set_title('Przycięty obraz')

cv2.imwrite('cropped_image.png', przycięte)

plt.pokaż()

Zobacz projekt tutaj .

Projekt 7: Rozpoznawanie twarzy i głosu dla osób niedowidzących

Ten projekt ma na celu pomoc osobom niedowidzącym poprzez konwersję danych wejściowych z twarzy na głosowe za pomocą Raspberry Pi 2 Model B i Raspberry Pi Camera Module. Jest to jeden z najpopularniejszych projektów otwartego CV w 2022 roku. Oprogramowanie umożliwia osobom niewidomym lub niedowidzącym wykrywanie znaków, tekstów lub osób w nieznanym środowisku, poruszanie się bez pomocy. Wśród innych wymagań projektu są OpenCV i Python do prowadzenia rozpoznawania twarzy, a rozpoznawanie głosu jest osiągane za pomocą GNU Octave.

Możesz sprawdzić kod tutaj .

Projekt 8: Inteligentny model obecności

Inteligentny system obecności to przydatne narzędzie do internetowych modeli edukacji, takich jak ZoomApp. Pomaga śledzić uczniów uczęszczających na zajęcia Zoom, monitorując ich obecność w czasie rzeczywistym. Wystarczy pobrać zrzut ekranu od ucznia z dołączoną datą i przesłać go do pliku Excela.

Samouczek dotyczący tego otwartego projektu CV można znaleźć tutaj .

Projekt 9: Zamiana twarzy z OpenCV

Aplikacje i filtry do zamiany twarzy od jakiegoś czasu cieszą się popularnością w mediach społecznościowych. Od pojawienia się młodych i starych po konwertowanie nieruchomych obrazów na ruchome obrazy, takie jak Instagram, Snapchat i FaceApp przeskoczyły modę. Aplikacje do zamiany twarzy są stosunkowo łatwe do tworzenia przy użyciu OpenCV i Pythona.

Kroki obejmują umieszczenie obrazu źródłowego na obrazie docelowym za pomocą trójkąta utworzonego przy użyciu detektora punktów orientacyjnych dlib.

Zobacz projekt tutaj .

Projekt 10: Wykrywanie konturów i liczenie kształtów

Projekt wykrywa kontury lub kontury danego kształtu, aby określić rodzaj kształtu obiektu. Na przykład, jeśli obraz zawiera kapsle, możesz użyć okrągłego kształtu, aby określić, ile kapsli znajduje się na obrazie.

Oto kod źródłowy, który to umożliwia:

importuj numer jako np

z matplotlib importuj pyplot jako plt

W 2]:

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

szary = cv2.cvtColor(obraz, cv2.COLOR_BGR2GRAY)

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

plt.title('kapsli'); plt.pokaż()

cv2.imwrite('kapsli_butelki_input.jpg', szary)

Out [2]:

Prawdziwe

W [3]:

rozmycie = cv2.medianBlur(szary, 5)

okręgi = cv2.HoughCircles(rozmycie, cv2.HOUGH_GRADIENT, 1.5, 10)

dla i w kręgach[0,:]:

# narysuj zewnętrzny okrąg

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

# narysuj środek koła

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

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

plt.title('Wykryte kręgi'); plt.pokaż()

cv2.imwrite('wykryte_koła.jpg', obraz)

Out [3]:

Prawdziwe

W [ ]:

Z drugiej strony liczenie kształtów obejmuje stosowanie algorytmów do segmentacji obrazów i danych klastrowych w celu określenia interesujących miejsc na obrazie. Używamy konturów binarnych i przybliżonych za pomocą funkcji approxPolyDP.

Możesz sprawdzić ten otwarty projekt CV tutaj .

Końcowe przemyślenia

Computer Vision pozwala na opracowanie szerokiej gamy przydatnych aplikacji, takich jak transformacja obrazu, translacja, wykrywanie konturów, segmentacja obrazu, wykrywanie obiektów, śledzenie obiektów i analiza ruchu.

Jest również używany w rzeczywistości rozszerzonej (AR), ucząc się lokalizowania twarzy, wykrywania kształtów itp., Rozpoznawać obiekty i twarze. Możesz także tworzyć ciekawe projekty Open CV, korzystając z prostego uczenia maszynowego, takiego jak czytnik kart kredytowych, wykrywacz odręcznych cyfr lub czytnik twarzy.

Wymaga to jednak zrozumienia nauki o danych i uczenia maszynowego, w szczególności uczenia głębokiego. Jeśli chcesz rozpocząć karierę jako inżynier ML, Data Scientist lub Deep Learning Engineer, zalecamy nabycie Advanced Certificate Program w Machine Learning & Deep Learning .

Ten kurs pomoże ci dobrze zapoznać się z pojęciami statystyki, regresji, algorytmów klastrowania, sieci neuronowych, wykrywania obiektów i rozpoznawania gestów. Nie tylko to, pomoże Ci zdobyć wiedzę w zakresie OpenCV, Python, TensorFlow, MySQL, Keras, Excel i NumPy, a także innych narzędzi programistycznych i bibliotek oraz pomoże wyróżnić się z tłumu.

Co to jest OpenCV?

OpenCV to biblioteka typu open source do przetwarzania obrazu i wizji komputerowej, utrzymywana przez firmę Intel, a teraz obsługiwana przez społeczność programistów. Będąc open source, OpenCV wykorzystuje moc całej społeczności programistów. Biblioteka została zaprojektowana tak, aby była zoptymalizowana pod kątem zastosowań w czasie rzeczywistym, takich jak rozpoznawanie obiektów, nadzór wideo, interakcja człowiek-maszyna, medycyna i inne pokrewne dziedziny.

Co to jest wykrywanie obiektów?

Wykrywanie obiektów to proces lokalizowania obiektów na obrazach lub filmach, które nie są łatwe do wykrycia. Problem ten jest zwykle formułowany jako przykład klasyfikacji. Mając dany obraz, chcemy sklasyfikować jego różne obiekty (takie jak samochody, piesi i budynki) wraz z ich obwiedniami, które z kolei podadzą nam ich lokalizację. Wykrywanie obiektów to zadanie identyfikacji obiektów na obrazie. Celem wykrywania obiektów jest odnalezienie położenia obiektów na obrazie (tj. ich lokalizacja) oraz oszacowanie ich wielkości i kształtu. Wykrywanie obiektów jest trudnym problemem, ponieważ obiekty są często częściowo przesłonięte i czasami mają ogromną różnorodność wyglądu, a także niesztywne deformacje obrazu.

Jaki jest najdokładniejszy algorytm wykrywania obiektów?

Istnieje wiele algorytmów wykrywania obiektów i żaden z nich nie jest w 100% dokładny. Algorytmy wykrywania obiektów napotykają problem przepełnienia danych. W rzeczywistości niektórzy badacze wizji komputerowych twierdzą, że algorytmy wykrywania obiektów nie mogą być w 100% dokładne. Ale istnieje wiele algorytmów, które dają dokładne wyniki dla danego zbioru danych. Jeśli możesz sobie pozwolić na maszynę GPU, sugerujemy użycie implementacji SVM opartej na OpenCV do wykrywania obiektów. Jest bardzo dokładny, szybki i działa na bardzo dużym zbiorze danych. Jednak nie radzi sobie zbyt dobrze z okluzją. Jeśli chcesz zbudować wykrywacz twarzy, przejdź do implementacji klasyfikatora kaskadowego Haar w OpenCV.