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

Вниз

Количество уникальных цветов в изображении   Найти похожие ветки 

 
Ricks ©   (2007-03-09 23:03) [0]

Каким образом это можно подсчитать?


 
Sapersky   (2007-03-10 10:56) [1]

Создать массив цветов, пройти по картинке, для каждого пикселя проверить - если его нет в массиве, увеличить счётчик, занести цвет в массив. Например, так:
(http://sourceforge.net/project/showfiles.php?group_id=173551)

function Count24(Bmp:TFastDIB):Integer;
type
 PCheck =^TCheck;
 TCheck = array[Byte,Byte,0..31]of Byte;
var
 pb: PByte;
 pc: PFColor;
 Check: PCheck;
 x,y,c: Integer;
begin
 Result:=0;
 New(Check);
 FillChar(Check^,SizeOf(TCheck),0);
 pc:=Pointer(Bmp.Bits);
 for y:=0 to Bmp.AbsHeight-1 do begin
   for x:=0 to Bmp.Width-1 do begin
     pb:=@Check[pc.r,pc.g,pc.b shr 3];
     c:=1 shl(pc.b and 7);
     if(c and pb^)=0 then begin
       Inc(Result);
       pb^:=pb^ or c;
     end;
     Inc(pc);
   end;
   pc:=Ptr(Integer(pc)+Bmp.Gap);
 end;
 Dispose(Check);
end;

Массив [Byte,Byte,0..31] of Byte - это, в некотором смысле, эмуляция массива [Byte,Byte,Byte] of Bit. Можно написать просто [Byte,Byte,Byte] of Byte, но тогда функция потребует 16 мб памяти вместо 2.
Можно попробовать одномерный динамический массив цветов, памяти потребуется меньше, но будет намного медленнее.


 
Ricks ©   (2007-03-10 12:06) [2]

Спасибо, попробую!


 
SamBrook ©   (2007-03-10 12:53) [3]

В XnView есть соответствующая утилита


 
Сотрудник деканата   (2007-03-12 10:13) [4]

Неопримизированный вариант для TBitmap
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mediaimg&id=10173



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
2-1201080965
Urist
2008-01-23 12:36
2008.02.17
Exel


2-1201508491
HITMAN
2008-01-28 11:21
2008.02.17
Работа с таблицей (баз данных)


10-1108818250
ilias1979
2005-02-19 16:04
2008.02.17
как показать полностью документ в olecontainer


15-1200490625
сопляк
2008-01-16 16:37
2008.02.17
Проект недоделанный


8-1173797585
San ciz
2007-03-13 17:53
2008.02.17
avi из картинок