Przelicz wartości RGB na zapis HSV
Wpisz trzy kanały RGB, a zapis HSV pojawi się w trakcie pisania: rgb(59, 130, 246) to hsv(217.2, 76%, 96.5%). Przełącznikiem Zapis HSV wybierzesz stopnie i procenty z programów graficznych, skalę OpenCV albo ułamki od 0 do 1, a kanały RGB zapisane ułamkami pole rozpozna samo.
Czym jest HSV i czym różni się od RGB?
RGB opisuje kolor ilością światła czerwonego, zielonego i niebieskiego, którą ekran wysyła w jednym punkcie. HSV opisuje ten sam kolor trzema cechami, które łatwiej sobie wyobrazić: odcieniem (H), czyli miejscem na kole barw zapisanym kątem od 0° do 360°, nasyceniem (S), czyli ilością koloru, oraz jasnością (V)[1].
Model zaproponował Alvy Ray Smith w 1978 roku. Chciał, żeby kolor na ekranie dobierało się tak, jak malarz miesza farby: wybiera czystą barwę, rozjaśnia ją bielą albo przyciemnia czernią. W jego modelu spadek nasycenia oznacza więcej bieli, a spadek jasności więcej czerni[2].
Ten sam model nosi też nazwę HSB, od angielskiego brightness[3]. Pod tą nazwą znajdziesz go w próbniku kolorów Photoshopa: barwa jest tam kątem od 0° do 360°, a nasycenie i jasność są podane w procentach[4]. Kanały RGB, od których zaczynasz, zapiszesz też jako kod szesnastkowy w konwerterze RGB na HEX.

Jeśli kolor masz w innym zapisie, na przykład w OKLCH, Lab albo jako kod z Androida, konwerter kolorów pokaże go naraz we wszystkich zapisach.
Jak przeliczyć RGB na HSV?
Podziel każdy kanał przez 255. Jasność V to największy z trzech wyników. Nasycenie S to różnica między największym a najmniejszym, podzielona przez największy. Odcień H zależy od tego, który kanał jest najmocniejszy[5].
Wzór: V = max, S = (max − min) ÷ max, a gdy najmocniejszy jest kanał niebieski, H = 240° + 60° × (R − G) ÷ (max − min). Przy najmocniejszym kanale czerwonym odcień liczy się od 0°, a przy zielonym od 120°[5].
Weźmy rgb(59, 130, 246). Po podzieleniu przez 255 kanały wynoszą 0,231, 0,510 i 0,965. Najwyższy jest niebieski, więc jasność to 96,5%. Różnica między największym a najmniejszym wynosi 0,733, a po podzieleniu przez 0,965 daje nasycenie 76%.
Odcień to 240° + 60° × (0,231 − 0,510) ÷ 0,733, czyli 240° − 22,8° = 217,2°. Cały kolor to hsv(217.2, 76%, 96.5%). Gdy wszystkie trzy kanały są równe, kolor jest szary, nasycenie wynosi 0, a odcień nie ma znaczenia[2], więc konwerter wpisuje w to miejsce 0.
Jakie wartości HSV mają podstawowe kolory?
| Kolor i wartości RGB | Kod HEX | 0–360°, 0–100% | OpenCV (0–179, 0–255) | 0–1 |
|---|---|---|---|---|
| Czerwony 255, 0, 0 | #FF0000 | hsv(0, 100%, 100%) | 0, 255, 255 | 0, 1, 1 |
| Pomarańczowy 255, 165, 0 | #FFA500 | hsv(38.8, 100%, 100%) | 19, 255, 255 | 0.1078, 1, 1 |
| Żółty 255, 255, 0 | #FFFF00 | hsv(60, 100%, 100%) | 30, 255, 255 | 0.1667, 1, 1 |
| Zielony 0, 255, 0 | #00FF00 | hsv(120, 100%, 100%) | 60, 255, 255 | 0.3333, 1, 1 |
| Cyjan 0, 255, 255 | #00FFFF | hsv(180, 100%, 100%) | 90, 255, 255 | 0.5, 1, 1 |
| Niebieski 0, 0, 255 | #0000FF | hsv(240, 100%, 100%) | 120, 255, 255 | 0.6667, 1, 1 |
| Fioletowy 128, 0, 128 | #800080 | hsv(300, 100%, 50.2%) | 150, 255, 128 | 0.8333, 1, 0.502 |
| Magenta 255, 0, 255 | #FF00FF | hsv(300, 100%, 100%) | 150, 255, 255 | 0.8333, 1, 1 |
| Biały 255, 255, 255 | #FFFFFF | hsv(0, 0%, 100%) | 0, 0, 255 | 0, 0, 1 |
| Szary 128, 128, 128 | #808080 | hsv(0, 0%, 50.2%) | 0, 0, 128 | 0, 0, 0.502 |
| Czarny 0, 0, 0 | #000000 | hsv(0, 0%, 0%) | 0, 0, 0 | 0, 0, 0 |
| Niebieski 59, 130, 246 | #3B82F6 | hsv(217.2, 76%, 96.5%) | 109, 194, 246 | 0.6034, 0.7602, 0.9647 |
Jak zmienia się HSV, gdy dodajesz do koloru biel albo czerń?
rgb(59, 130, 246) z bielą i z czernią w krokach co 25%, a każdy wynik przelicza ten konwerter. Widać na niej zasadę Smitha: biel obniża nasycenie przy prawie tej samej jasności, a czerń obniża jasność przy prawie tym samym nasyceniu[2].| Mieszanina | Wartości RGB | Kod HEX | HSV |
|---|---|---|---|
| 75% bieli | 206, 224, 253 | #CEE0FD | hsv(217, 18.6%, 99.2%) |
| 50% bieli | 157, 193, 251 | #9DC1FB | hsv(217, 37.5%, 98.4%) |
| 25% bieli | 108, 161, 248 | #6CA1F8 | hsv(217.3, 56.5%, 97.3%) |
| Kolor wyjściowy | 59, 130, 246 | #3B82F6 | hsv(217.2, 76%, 96.5%) |
| 25% czerni | 44, 98, 185 | #2C62B9 | hsv(217, 76.2%, 72.5%) |
| 50% czerni | 30, 65, 123 | #1E417B | hsv(217.4, 75.6%, 48.2%) |
| 75% czerni | 15, 33, 62 | #0F213E | hsv(217, 75.8%, 24.3%) |
Jak odczytać wynik w Photoshopie, Figmie, OpenCV i Pythonie?
Każdy z tych programów zapisuje HSV w innej skali. Przy każdym podajemy opcję przełącznika Zapis HSV, która daje liczby w tej samej postaci.
Photoshop
W próbniku kolorów wpisz wynik w pola H, S i B. Barwa jest tam kątem od 0° do 360°, a nasycenie i jasność procentami[4], więc wybierz opcję 0–360°, 0–100%.Figma
Na liście modeli pod suwakami próbnika wybierz HSB. Figma przyjmuje tu liczby całkowite: odcień od 0 do 360, nasycenie i jasność od 0 do 100[6]. Wynik z opcji 0–360°, 0–100% zaokrąglij więc do całości.OpenCV
Obraz 8-bitowy pocv2.cvtColor(obraz, cv2.COLOR_RGB2HSV)ma odcień od 0 do 180 oraz nasycenie i jasność od 0 do 255[5]. Opcja OpenCV (0–179, 0–255) liczy to tym samym rachunkiem na liczbach całkowitych. Porównaliśmy ją z OpenCV.js 4.10 na wszystkich 16 777 216 kolorach i wynik był identyczny.Python i Unity
Dlaczego OpenCV daje inny odcień niż konwerter?
Najczęściej dlatego, że OpenCV wczytuje zdjęcie z kanałami w kolejności niebieski, zielony, czerwony[9]. Obraz z cv2.imread przelicz więc stałą cv2.COLOR_BGR2HSV, a nie COLOR_RGB2HSV. Pomyłka zmienia sam odcień: te same trzy bajty 59, 130, 246 czytane jako BGR dają w OpenCV odcień 11 zamiast 109, czyli pomarańcz zamiast błękitu.
Druga pułapka dotyczy czerwieni. Leży ona na obu końcach skali odcienia, więc czysta czerwień ma w OpenCV odcień 0, a rgb(225, 0, 15), czerwień z lekką domieszką niebieskiego, już 178. Zakres, którym wybierasz czerwone piksele, musi zatem objąć oba końce skali.
Jakie zapisy wartości RGB obsługuje ten konwerter?
| Co wpisujesz | Co pokaże konwerter | Jak to czytamy |
|---|---|---|
| rgb(59, 130, 246) | hsv(217.2, 76%, 96.5%) | Zapis CSS z nawiasem przyjmujemy bez zmian. |
| 59 130 246 | hsv(217.2, 76%, 96.5%) | Trzy liczby rozdzielone spacjami wystarczą, bo nawiasy i przecinki nie są potrzebne. |
| R: 59, G: 130, B: 246 | hsv(217.2, 76%, 96.5%) | Litery kanałów, tak jak zapisuje je księga znaku, pomijamy i bierzemy same liczby. |
| rgb(23.1%, 51%, 96.5%) | hsv(217.2, 76%, 96.5%) | Kanały podane w procentach przeliczamy sami na skalę od 0 do 255. |
| rgba(59, 130, 246, 0,5) | hsva(217.2, 76%, 96.5%, 0.5) | Krycie zapisane z przecinkiem dziesiętnym przenosimy do wyniku w postaci hsva. |
| 0,2314 0,5098 0,9647 | hsv(217.2, 76%, 96.5%) | Kanały zapisane jako ułamki od 0 do 1 poznajemy po przecinku i przeliczamy na skalę od 0 do 255. |
| (59, 130, 246) | hsv(217.2, 76%, 96.5%) | Krotkę, którą wypisuje Python, czytamy razem z nawiasem. |
| [59, 130, 246] | hsv(217.2, 76%, 96.5%) | Tablicę NumPy, którą wypisuje Python, czytamy razem z nawiasem kwadratowym. |
| background-color: rgb(59, 130, 246); | hsv(217.2, 76%, 96.5%) | Całą linię wklejoną z arkusza stylów przyjmujemy i wyjmujemy z niej sam kolor. |
| 300, -20, 128 | hsv(329.9, 100%, 100%) | Wartości spoza zakresu przycinamy tak samo jak przeglądarka: 300 do 255, a −20 do 0. |
Konwertuj RGB na inne jednostki
Źródła
- HSV (grafika) — Wikipedia
- Color Gamut Transform Pairs (SIGGRAPH 78) — Alvy Ray Smith
- HSL and HSV — Wikipedia (wersja angielska)
- Wybieranie kolorów w programie Photoshop — Adobe
- Color conversions: RGB ↔ HSV — OpenCV
- About color models — Figma Help Center
- colorsys — Conversions between color systems — Python Software Foundation
- Color.RGBToHSV — Unity
- Image file reading and writing: imread — OpenCV
- Changing Colorspaces — OpenCV
Wszystkie wartości w tabelach wyliczyliśmy z definicji jednostek i sprawdziliśmy rachunkowo przed publikacją. Dane historyczne i nazwy lokalnych jednostek opieramy na źródłach wymienionych wyżej.
Ostatnia aktualizacja treści: · przygotował i sprawdził zespół Arteon
Najczęstsze pytania o przeliczanie RGB na HSV
Kiedy lepiej użyć HSV zamiast RGB?
Gdy wybierasz albo zmieniasz kolor według barwy, ilości koloru i jasności. W dokumentacji OpenCV czytamy, że kolor łatwiej opisać w HSV niż w BGR[10], dlatego HSV służy tam do wyszukiwania obiektów w danym kolorze. Arkusze stylów i pliki graficzne zapisują kolor zwykle w RGB albo w HEX, więc gotowy kolor przeliczasz na koniec z powrotem na kanały.
Czym HSV różni się od HSL?
Oba modele mają ten sam odcień, ale inaczej liczą pozostałe dwie liczby. W HSV czysta czerwień ma jasność 100%, czyli hsv(0, 100%, 100%), a w HSL jasność 50%, czyli hsl(0, 100%, 50%). Zapis HSL tego samego koloru poda konwerter RGB na HSL.
Jak przeliczyć kod HEX na HSV?
Zamień kod na trzy kanały w konwerterze HEX na RGB i wklej wynik tutaj. Pole przyjmie go razem z nawiasem rgb().
Czy konwerter zachowa krycie koloru?
Tak, w zapisie w stopniach i procentach krycie trafia do hsva(), a w zapisie 0–1 staje się czwartą liczbą. Zapis OpenCV krycie pomija, bo obraz HSV ma w OpenCV tylko trzy kanały.
Jak przeliczyć HSV z powrotem na RGB?
Wpisz wynik do konwertera HSV na RGB. Przycisk Zmień kolejność przeniesie Cię tam razem z bieżącym wynikiem.

Pomóż nam ulepszyć narzędzia
Masz pomysł na nową funkcję, widzisz błąd lub chcesz zaproponować inne narzędzie? Napisz do nas.