Zbuduj paletę kolorów za pomocą Pythona

Zbuduj paletę kolorów za pomocą Pythona

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 install 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 n-wymiarowe obiekty tablicowe, a także operacje matematyczne, które pomagają w manipulowaniu tymi tablicami.

Aby zainstalować NumPy w swoim środowisku, wykonaj:

pip install 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 tworzyć i dekodować 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.

Rozpocznij od zaimportowania modułów OpenCV i NumPy. Zdefiniuj funkcję o nazwie emptyfunction() zawierającą 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 numpy as np

def emptyFunction():
    pass

Wygeneruj trójwymiarową tablicę o rozmiarze 512 * 512 * 3 z typem danych uint8, używając funkcji zero() NumPy . 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.

image = np.zeros((512, 512, 3), np.uint8)

Ustaw nazwę okna, które program wyświetli i przekaż ją do funkcji namedWindow() w celu utworzenia okna:

windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

Następnie wygeneruj trzy paski śledzenia dla składowych koloru czerwonego, zielonego i niebieskiego. Możesz to zrobić za pomocą funkcji createTrackbar() OpenCV . 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('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

Zadeklaruj nieskończoną pętlę while i przekaż nazwę okna wraz z obrazem, który chcesz wyświetlić, do funkcji imshow() OpenCV . Ponieważ obraz zawiera trójwymiarową tablicę zer, program początkowo wyświetla czarny ekran.

Sprawdź, czy użytkownik nacisnął klawisz Escape, porównując wartość z waitkey() z 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 funkcji 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.

while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break


    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

Gdy użytkownik naciśnie klawisz Escape, użyj funkcji destroyAllWindows() , aby zamknąć okna otwarte przez 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. Gdy zmienisz 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.

Paleta kolorów dla Orange Red

Podobnie, gdy ustawisz niebieski pasek na 130, zielony na 0, a czerwony na 75, uzyskasz kolor indygo.

Paleta kolorów dla Indigo

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *