Odczyt koloru piksela PDF Drukuj Email
Wpisał doctor   
Piątek, 02. Marzec 2007 03:14

Odczyt koloru piksela

W programach w których operujemy na kolorach, czy to wypełnienia formy, przycisku czy w szczególności pojedynczego  piksela zachodzi potrzeba poznania składowych koloru. Dla przykładu podam program do zamiany obrazka kolorowego (głębia kolorów 24 bity) na czarnobiały, składający się z odcieni szarości.

Może jeszcze ktoś pamięta czarno-białe telewizory :=)

Zasada działania tych urządzeń opierała się na właściwości ludzkiego oka, a mianowicie człowiek bardziej zauważa zmiany natężenia oświetlenia niż zmiany koloru.
Parafrazując, kolorowy sygnał musiał być zamieniany na 2 sygnały: sygnał luminacji i sygnał chrominacji.



Składowa luminacji dana jest wzorem
Ey = 0.30Er + 0.59Eg + 0.11Eb

I właśnie tu musimy znać trzy składowe sygnału: reg, green i blue.

Przykład    

Kładziemy na formę 1 button i 3 labele. Formę zapełniamy np. czerwonym kolorem (posiada tylko składową red).

W zdarzeniu OnClick przycisku wpisujemy

 

 Form1->Color = clRed;
// zamalowanie formy
TColor Kolor = Canvas->Pixels[5] [6];
// odczyt koloru pixela o wsp. x=5,y=6
int czerwony = GetRValue(Kolor);
// pobranie wartosci składowej czerwonej
int zielony = GetGValue(Kolor);
// pobranie wartosci składowej zielonej
int niebieski = GetBValue(Kolor);
// pobranie wartosci składowej niebieskiej


Label1->Caption = IntToStr(czerwony);

Label2->Caption = IntToStr(zielony);

Label3->Caption = IntToStr(niebieski);


Funkcję GetR,G,B Value zwracają wartość całkowitą z przedziału 0-255.

Kolor biały ma składowe RGB(255, 255, 255). 

 

Komentarze
Dodaj nowy Szukaj
+/-
Napisz komentarz
Nick:
E-mail:
 
Strona www:
Tytuł:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Proszę wpisać kod antyspamowy widoczny na obrazku.
ewa   |83.9.169.xxx |2009-01-31 11:14:04

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Ostatnia aktualizacja: Piątek, 10. Lipiec 2009 13:59
 
 

Losowy obraz

COMparam.JPG

Gościmy

Naszą witrynę przegląda teraz 13 gości 




| | | |