Spisu treści:
- Krok 1: Pliki nagłówkowe
- Krok 2: Przechwytywanie wideo
- Krok 3: Przechwytywanie ramki i definiowanie koloru
- Krok 4: Maskowanie i wyodrębnianie
- Krok 5: Wreszcie wyświetlanie
- Krok 6: Demo
Wideo: Proste wykrywanie kolorów za pomocą OpenCV: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Cześć! Dzisiaj pokażę prostą metodę wykrywania koloru z wideo na żywo za pomocą OpenCV i Pythona.
Zasadniczo po prostu przetestuję, czy wymagany kolor jest obecny w ramce tła, czy nie, i za pomocą modułów OpenCV zamaskuję ten region i jednocześnie wyświetlę ramkę.
Krok 1: Pliki nagłówkowe
Teraz tutaj użyłem dwóch plików nagłówkowych, a mianowicie cv2 i NumPy. Zasadniczo cv2 to biblioteka OpenCV, która ładuje wszystkie pliki c++, które są ważne podczas używania poleceń w kodach (zawiera wszystkie definicje).
A Numpy to biblioteka Pythona, która jest niezbędna do przechowywania wielowymiarowej tablicy. Będziemy używać do przechowywania naszych współrzędnych gamy kolorów.
A numpy jako np zasadniczo pomaga naszemu kodowi nieco skrócić, używając za każdym razem np. zamiast numpy.
Krok 2: Przechwytywanie wideo
Jest to dość proste podczas korzystania z Pythona. Tutaj wystarczy włączyć magnetowid, aby mógł rozpocząć nagrywanie klatek.
Teraz wartość wewnątrz VideoCapture wskazuje kamerę, w moim przypadku kamera jest podłączona do mojego laptopa, więc 0.
Możesz przejść podobnie do 1 dla kamery dodatkowej i tak dalej. VideoCapture tworzy dla niego obiekt.
Krok 3: Przechwytywanie ramki i definiowanie koloru
Teraz musimy coś zrobić, abyśmy mogli uchwycić natychmiastową klatkę wideo, która pomoże nam wyodrębnić obraz i możemy nad tym pracować zgodnie z wymaganiami.
Pętla „while” pomoże nam uruchomić pętlę w wymaganym czasie. Teraz " _, frame = cap.read() " jest używany do sprawdzania poprawności przechwyconej ramki i jej przechowywania. "cap.read() jest zmienną logiczną i zwraca prawdę, jeśli ramka jest odczytana poprawnie i jeśli nie otrzymasz żadnych ramek, nie pokaże żadnego błędu, po prostu otrzymasz Brak.
Teraz wiersz 11 i wiersz 12 w zasadzie definiują zakres kolorów, które musimy wykryć. Do tego przyzwyczaiłem się do koloru niebieskiego.
Możesz kontynuować z dowolnym kolorem, wystarczy wpisać wartości BGR dla tego konkretnego koloru. Lepiej jest zdefiniować dwie tablice za pomocą tablic numpy, ponieważ wykrywanie określonego koloru w świecie rzeczywistym nie spełni naszego celu, a raczej zdefiniujemy zakres koloru niebieskiego, aby wykrywał w zakresie.
W tym celu zdefiniowałem dwie zmienne przechowujące dolne wartości BGR i górne wartości BGR.
Krok 4: Maskowanie i wyodrębnianie
Teraz nadchodzi główne zadanie zamaskowania kadru i wydobycia koloru kadru. Do maskowania użyłem predefiniowanych poleceń obecnych w bibliotece w OpenCV. Zasadniczo maskowanie to proces usuwania części ramki, tj. usuwamy piksele, których wartości BGR koloru nie leżą w zdefiniowanym zakresie kolorów i jest to wykonywane przez cv2.inRange. Następnie zastosujemy zakres kolorów do zamaskowanego obrazu w zależności od wartości pikseli, a do tego użyjemy cv2.bitwise_and, Po prostu przypisze kolory do zamaskowanego regionu w zależności od wartości maski i zakresu kolorów.
Link do cv2. bitwise_and:
Krok 5: Wreszcie wyświetlanie
Tutaj użyłem podstawowego cv2.imshow() do wyświetlania każdej klatki jako obrazu. Ponieważ mam dane ramki przechowywane w zmiennych, mogę je pobrać w imshow(). Tutaj pokazałem wszystkie trzy ramki, oryginalne, zamaskowane i kolorowe.
Teraz musimy wyjść z pętli while. W tym celu możemy po prostu zaimplementować cv2.wait. Key(). Zasadniczo informuje o czasie oczekiwania przed odpowiedzią. Więc jeśli przejdziesz 0, będzie czekał w nieskończoność, a 0xFF mówi, że architektura jest 64-bitowa. " ord() " określa znak, który po naciśnięciu wykona polecenie przerwania w bloku if i wyjdzie z pętli.
Następnie cap.release() zamyka rejestrator wideo, a cv2.destroyAllWindows() zamyka wszystkie otwarte okna.
Jeśli masz jakiś problem, daj mi znać.
Link do kodu źródłowego:
Zalecana:
Przetwarzanie obrazu za pomocą Raspberry Pi: Instalacja OpenCV i separacja kolorów obrazu: 4 kroki
Przetwarzanie obrazu za pomocą Raspberry Pi: Instalowanie OpenCV i separacji kolorów obrazu: Ten post jest pierwszym z kilku samouczków dotyczących przetwarzania obrazu, które mają zostać wykonane. Przyglądamy się bliżej pikselom, które składają się na obraz, dowiadujemy się, jak zainstalować OpenCV na Raspberry Pi, a także piszemy skrypty testowe do przechwytywania obrazu, a także c
Wykrywanie kolorów w Pythonie za pomocą OpenCV: 8 kroków
Wykrywanie kolorów w Pythonie za pomocą OpenCV: Witam! Ta instrukcja służy do nauczenia, jak wyodrębnić określony kolor z obrazu w pytonie za pomocą biblioteki openCV. Jeśli jesteś nowy w tej technice, nie martw się, na końcu tego przewodnika będziesz mógł zaprogramować swój własny kolor
Śledzenie obiektów w oparciu o wykrywanie kolorów: 10 kroków
Śledzenie obiektów w oparciu o wykrywanie kolorów: historia Zrobiłem ten projekt, aby nauczyć się przetwarzania obrazu za pomocą Raspberry PI i otwartego CV. Aby uatrakcyjnić ten projekt użyłem dwóch silników SG90 Servo i zamontowałem na nim kamerę. Jeden silnik służy do poruszania się w poziomie, a drugi do poruszania się w pionie
DIY Home Security - Jak wykonać proste wykrywanie ruchu - Nowa wersja: 6 kroków
DIY Home Security - Jak wykonać proste wykrywanie ruchu | Nowa wersja: W tym projekcie pokażę, jak zrobić niedrogi alarm powiadamiający o ruchu w domu DIY! Zobacz starą wersję: Jak zrobić system bezpieczeństwa WiFi za 10 USD w domu
Wykrywanie kolorów za pomocą diody LED RGB: 4 kroki
Wykrywanie kolorów za pomocą diody LED RGB: Czy kiedykolwiek chciałeś zautomatyzowanego sposobu wykrywania koloru obiektu? Oświetlając przedmiot światłem o określonym kolorze i patrząc, ile światła zostało odbite, można określić, jakiego koloru jest przedmiot. Na przykład, jeśli zapalisz czerwone światło