![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() народ помогите как мне програмно определить цвет у меня чёрно серая картинка.... я хочу отделить чисто чёрный от серого цвета (серый полностью убрать чтобы было чёрно белое изображение). помогите плизз как это реализовать?
Последний раз редактировалось GeG, 06.08.2008 в 20:33. |
#2
|
|||
|
|||
![]() У тебя серая картинка на черном фоне?
Если тебе надо заменить например в картинке черный цвет на белый делай так Код:
procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; begin for i:=0 to Image1.Picture.Width do for j:=0 to Image1.Picture.Height do if Image1.Canvas.Pixels[i,j]=clBlack then Image1.Canvas.Pixels[i,j]:=clWhite; end; |
#3
|
|||
|
|||
![]() Только наверно это будет немного посложнее, придется сравнивать с диапазоном цветов, потому что на картинке будет куча оттенков серого
P.S. Серый это когда три цвета в RGB одиннаковые, (1,1,1)..(255,255,255) |
#4
|
|||
|
|||
![]() ![]() вот типа такой картинки... в данном примере всего 2 оттенка серого и 1 чёрный... вот мне нужно чтобы програмно можно было отделить чёрный цвет а серый превратить в белый вот так ![]() |
#5
|
|||
|
|||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; tmp: Tcolor; begin tmp:=Image1.Canvas.Pixels[0,0]; // или Image1.Canvas.Pixels[1,1] for i:=0 to Image1.Picture.Width do for j:=0 to Image1.Picture.Height do if Image1.Canvas.Pixels[i,j]=tmp then Image1.Canvas.Pixels[i,j]:=clWhite; end; Добжно работать, закрасишь фон. для закраски всего серого надо писать подцункцию. поределеющую цвета на картинки Последний раз редактировалось dmdx, 06.08.2008 в 23:06. |
#6
|
|||
|
|||
![]() угу я уже это попробовал там всего 1 линия стала белой и всё (((
|
#7
|
|||
|
|||
![]() Цитата:
Значит у тебя картинка не 16 цветовая а 256 или больше. тут надо только путем сравнения как говорит Burka. Приши подфункцию Код:
function GetTrueGrey(inParam: Tcolor): integer; begin // Если inParam = оттенку серого то возвращать 0 в противном случае 1 // так же можно использовать Boolean в качестве возврата. // надо разложить цвет на R G B отдельно и сравнить если они одинаковые то гуд end; |
#8
|
|||
|
|||
![]() Если картинка действительно 256 цветов или 16 цветов. то можно написать небольшой тип перечисления или множества куда будут заноситься все цвета серого и сообветственно если это цвет серого оттенка затирать.
|