Człowiek potrafi rozróżnić około 10 milionów kolorów. Aby je dostrzec, potrzebujesz czegoś, co nazywa się paletą kolorów. Paleta kolorów zawiera narzędzia do wyświetlania pełnej gamy kolorów widocznych dla ludzkiego oka. W prawdziwym świecie używasz ich do tworzenia estetycznych projektów na papierze, podczas gdy cyfrowo używasz ich do dodawania koloru elementom ekranu.
Ostatecznie twój komputer koduje wszystkie odcienie, które widzisz na ekranie, używając określonego formatu. Dzięki Pythonowi możesz opracować paletę kolorów zakodowaną w RGB w zaledwie kilku liniach kodu dzięki modułom OpenCV i NumPy.
Moduł OpenCV i NumPy
Możesz analizować obrazy i filmy za pomocą OpenCV. Jest darmowy, open source, prosty w użyciu i pełen pomocnych bibliotek. Zapewniają one techniki klasyfikowania, lokalizowania i śledzenia obiektów zarówno w dwóch, jak iw trzech wymiarach. Aby zainstalować OpenCV w swoim środowisku, otwórz terminal i uruchom:
pip zainstaluj opencv-python
Moduł NumPy to kolejna popularna biblioteka, z której korzysta wiele programów w Pythonie. NumPy — numeryczny Python — to moduł, którego można używać do analizy danych i obliczeń naukowych. Zapewnia również n-wymiarowe obiekty tablicowe operacje matematyczne które pomagają w manipulowaniu tymi tablicami.
Aby zainstalować NumPy w swoim środowisku, wykonaj:
instalacja pip numpy
Ogólnie rzecz biorąc, będziesz używać OpenCV do przetwarzania obrazów przy użyciu technik takich jak wykrywanie krawędzi. Następnie możesz użyć NumPy do przeprowadzenia analizy danych na przetworzonym obrazie. Korzystając z tej kombinacji, możesz stworzyć i zdekodować kod QR, klasyfikować obrazy, przeprowadzać optyczne rozpoznawanie znaków i budować systemy nadzoru wideo, które mogą wykrywać ruch i śledzić osoby w czasie rzeczywistym.
Jak zbudować paletę kolorów za pomocą Pythona
Wykonaj poniższe kroki, aby zbudować paletę kolorów przy użyciu modułu OpenCV i NumPy w Pythonie.
Możesz znaleźć źródło palety kolorów za pomocą Pythona w tym GitHub magazyn.
Rozpocznij od zaimportowania modułów OpenCV i NumPy. Zdefiniuj funkcję o nazwie pustafunkcja() który zawiera instrukcję pass. Instrukcja pass działa jako symbol zastępczy dla kodu, który możesz napisać w przyszłości. Jest to szczególnie przydatne w przypadku funkcji takich jak createTrackbar, których użyjesz później. Wymaga prawidłowej funkcji wywołania zwrotnego i na razie możesz przekazać emptyFunction jako symbol zastępczy.
import cv2
import liczba Jak np
pokpustaFunkcja():
przechodzić
Wygeneruj trójwymiarową tablicę o rozmiarze 512 * 512 * 3 z typem danych uint8, używając NumPy zero() funkcjonować. Każda tablica będzie składać się z 512 kolumn i 512 wierszy. uint8 reprezentuje liczbę całkowitą bez znaku, więc program wypełnia tablicę zerami.
obraz = np.zera((512, 512, 3), np.uint8)
Ustaw nazwę okna, które program wyświetli i przekaż ją do nazwane okno() funkcja tworzenia okna:
nazwa okna = „Paleta kolorów OpenCV”
cv2.namedWindow (nazwa okna)
Następnie wygeneruj trzy paski śledzenia dla składowych koloru czerwonego, zielonego i niebieskiego. Możesz to zrobić za pomocą OpenCV utwórz pasek śledzenia() funkcjonować. Najpierw przekaż etykietę jako czerwoną, niebieską lub zieloną. Po drugie, musisz podać nazwę okna, w którym chcesz umieścić te paski, na przykład windowName.
Trzeci parametr to minimalny limit paska śledzenia, w tym przypadku 0. Czwarty parametr określa maksymalną wartość, która wynosi 255 dla 24-bitowej wartości koloru. Piąty i ostatni parametr to funkcja wywołania zwrotnego, dla której createTrackbar wymaga prawidłowej funkcji. Dlatego wcześniej utworzyłeś funkcję emptyFunction, aby działała jako element zastępczy.
cv2.createTrackbar('Niebieski', nazwa okna, 0, 255, pustaFunkcja)
cv2.createTrackbar('Zielony', nazwa okna, 0, 255, pustaFunkcja)
cv2.createTrackbar('Czerwony', nazwa okna, 0, 255, pustaFunkcja)
Zadeklaruj nieskończoną pętlę while i przekaż nazwę okna wraz z obrazem, który chcesz wyświetlić w OpenCV pokaż() funkcjonować. Ponieważ obraz zawiera trójwymiarową tablicę zer, program początkowo wyświetla czarny ekran.
Sprawdź, czy użytkownik nacisnął klawisz Escape, testując wartość z klawisz oczekiwania() przeciwko 27 (kod ASCII dla klawisza Escape). Funkcja waitkey() wyświetla okno przez określoną liczbę milisekund lub do momentu naciśnięcia klawisza. Przekazując jeden jako dane wejściowe, wyświetla okno przez milisekundę, ale regeneruje się z powodu nieskończonej pętli while.
Aby uzyskać aktualną pozycję paska śledzenia, przekaż nazwę paska śledzenia wraz z nazwą okna do getTrackBarPos(). Powtórz ten krok dla trzech oddzielnych składników koloru: niebieskiego, zielonego i czerwonego. Użyj operatora plasterka, aby przypisać trzy wartości do tablicy obrazów. Spowoduje to zastąpienie poprzedniego zestawu wartości, początkowo samych zer, bieżącymi wartościami zgodnie z pozycjami paska śledzenia.
chwila (PRAWDA):
cv2.imshow (nazwa okna, obraz)Jeśli cv2.waitKey(1) == 27:
przerwa
niebieski = cv2.getTrackbarPos('Niebieski', nazwa okna)
zielony = cv2.getTrackbarPos('Zielony', nazwa okna)
czerwony = cv2.getTrackbarPos('Czerwony', nazwa okna)
obraz[:] = [niebieski, zielony, czerwony]
nadruk (niebieski, zielony, czerwony)
Gdy użytkownik naciśnie klawisz Escape, użyj zniszcz wszystkie okna() aby zamknąć okna, które otworzył program:
cv2.destroyAllWindows()
Na koniec złóż to wszystko razem i uruchom, aby kontrolować i przeglądać swoją paletę kolorów.
Dane wyjściowe programu palety kolorów Pythona
Po uruchomieniu powyższego programu pojawi się okno zawierające trzy paski ścieżek dla kolorów: niebieskiego, zielonego i czerwonego. Paski śledzenia poruszają się w zakresie od 0 do 255. Kiedy zmieniasz wartości różnych słupków, w poniższej sekcji powinieneś zobaczyć różne odcienie kolorów.
W tym pierwszym przykładzie możesz zobaczyć ustawienie niebieskiego paska na 0, zielonego na 69 i czerwonego na 255. Wynikowy kolor wyjściowy to odcień pomarańczy/czerwieni. Ponadto okno terminala wyświetla wartości kolorów jako 0 69 255.
Podobnie, gdy ustawisz niebieski pasek na 130, zielony na 0, a czerwony na 75, uzyskasz kolor indygo.
Różne zastosowania OpenCV
OpenCV oferuje cenne funkcje do zadań takich jak przetwarzanie obrazu, rozpoznawanie obiektów, rozpoznawanie twarzy i śledzenie. Korzystając z OpenCV, możesz tworzyć komputerowe aplikacje wizyjne w czasie rzeczywistym, które byłyby dobrodziejstwem w obszarach takich jak robotyka, automatyka przemysłowa, obrazowanie medyczne i systemy nadzoru.
Przyszłość widzenia komputerowego jest obiecująca. Będziesz mógł korzystać z wizji komputerowej, aby pomóc osobom niedowidzącym, uzyskać lepszy wzrost w rolnictwie, poprawić bezpieczeństwo na drogach za pomocą samojezdnych samochodów, a nawet nawigować po innych planetach, takich jak Mars.