![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 цветов. то можно написать небольшой тип перечисления или множества куда будут заноситься все цвета серого и сообветственно если это цвет серого оттенка затирать.
|