Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Как   Найти похожие ветки 

 
ivanivan ©   (2002-11-19 06:40) [0]

Есть картинка определенного размера. Как оставить только тот цвет, которого меньше всего на картинке, перекрасить его в черный, а все остальные в белый?

Если можно превидите пример

Заранее спасибо!!!


 
MBo ©   (2002-11-19 07:39) [1]

Придется пробежать по всем пикселам, посчитать количество.
Долго - Canvas.Pixels[]
Быстрее - ScanLine


 
ivanivan ©   (2002-11-19 08:32) [2]

Вообще я примерно так и представлял это себе, но как КОНКРЕТНО ?
Можно кусок исходняка?


 
MBo ©   (2002-11-19 08:52) [3]

пример в хелпе на scanline имеется


 
Fenik ©   (2002-11-24 11:40) [4]

Попробуй изменить следующую ф-ю, так чтобы она считала самый редкий цвет и возвращала его. Потом снова проходишь каждый пиксель и если он совпадает с найденным оставляешь а если нет - заменяешь на некоторый.


{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функция возвращает колличество уникальных цветов Bitmap

Зависимости: Graphics
Автор: Nikolas Chook, chook_nu@uraltc.ru, Новоуральск
Copyright: Собственное написание (Николай федоровских)
Дата: 1 июня 2002 г.
***************************************************** }

function HowManyColors(Bitmap: TBitmap): Integer;
type
TRGB = record
B, G, R: Byte;
end;
pRGB = ^TRGB;

var i: Byte;
x, y: Integer;
Dest: pRGB;
RGBArray: array [0..255, 0..255] of array of Byte;
begin
Bitmap.PixelFormat := pf24Bit;
Result := 0;
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do
if RGBArray[r, g] <> nil then
for i := 0 to High(RGBArray[r, g]) do begin
//если такой цвет уже есть, то выходим из цыкла
if RGBArray[r, g] [i] = b then Break;
//если это последний круг цикла, то такого цвета нет
if i = High(RGBArray[r, g]) then begin
Inc(Result); //прибавляем один цвет
SetLength(RGBArray[r, g], Length(RGBArray[r, g]) + 1);
RGBArray[r, g] [High(RGBArray[r, g])] := b;
end;
end
else begin
Inc(Result);
SetLength(RGBArray[r, g], 1);
RGBArray[r, g] [0] := b;
end;
Inc(Dest);
end;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
3-16951
dimich1978
2003-02-15 08:39
2003.03.06
Код для выявления уникальности(быстренький).


1-16992
ZaM2000
2003-02-24 15:54
2003.03.06
Эмуляция DoubleClick на определенном item е ListView


6-17245
Lex
2003-01-18 10:49
2003.03.06
Как получить список компов в локальной сети?


1-17173
kudatsky
2003-02-24 09:54
2003.03.06
TQuickRep


1-17017
___Nikolay
2003-02-25 06:01
2003.03.06
Как в TreeView по открыванию узла менять его иконку?