Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 00:38   #1
zih
Пользователь
 
Регистрация: 14.10.2010
Сообщений: 15
По умолчанию Количество пикселей определенного цвета

Есть картинка на форме, которая постоянно меняется. Так вот нужно узнать количество пикселей одного цвета в этой картинки и вывести это на memo1. За поиск цвета пикселей использовать точку 0,0 этой картинки. Я так понял для быстроты это делается все с помощью scanline. Но как все это связать в одно ума не приложу.
zih вне форума Ответить с цитированием
Старый 18.10.2010, 01:00   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Где именно у вас эта картинка?


Пример http://dominickdark.narod.ru/Pr0grams/ScanLine.html
Если в Image1 (и в bmp), то вместо создания MyBmp можно взять Image1.Picture.Bitmap...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.10.2010, 05:46   #3
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от zih Посмотреть сообщение
Есть картинка на форме, которая постоянно меняется. Так вот нужно узнать количество пикселей одного цвета в этой картинки и вывести это на memo1. За поиск цвета пикселей использовать точку 0,0 этой картинки. Я так понял для быстроты это делается все с помощью scanline. Но как все это связать в одно ума не приложу.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j,n:integer;
    p:PByteArray;
    colors : array [0..255] of integer;
begin
     if not (Image1.Picture.Bitmap.PixelFormat in [pf24Bit, pf32Bit]) then
        raise exception.create('Error, Format File not supported!');
     Memo1.Lines.Clear;
     FillChar(colors,SizeOf(colors),0);
     n := Abs(Integer(Image1.Picture.Bitmap.ScanLine[1]) - Integer(Image1.Picture.Bitmap.ScanLine[0]));
     Gauge1.MaxValue:=100;
     Gauge1.Progress:=0;
     for i:=0 to Image1.Picture.Bitmap.Height-1 do
     begin
          P:=Image1.Picture.Bitmap.ScanLine[i];
          for j:=0 to n-1 do
              inc(colors[P^[j]]);
          Gauge1.Progress:=Round((i+1)*100/Image1.Picture.Bitmap.Height);
     end;
     for i:=0 to 255 do
     if colors[i]>0 then
     Memo1.Lines.Add('Цвет №'+IntToStr(i)+', количество='+IntToStr(colors[i]));
end;
Вложения
Тип файла: rar Bmp.rar (6.6 Кб, 61 просмотров)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 18.10.2010, 16:11   #4
zih
Пользователь
 
Регистрация: 14.10.2010
Сообщений: 15
По умолчанию

for i:=0 to Image1.Picture.Bitmap.Height-1 do
begin
P:=Image1.Picture.Bitmap.ScanLine[i];
for j:=0 to n-1 do
inc(colors[P^[j]]);
Gauge1.Progress:=Round((i+1)*100/Image1.Picture.Bitmap.Height);
Я так понял он начинает искать пиксели сверху вниз, а не слева направо. Думал если вместо height поставить width будет сканировать по ширине, но почему то выдает ошибку. Как сделать чтоб сканировал по ширине image. Заранее спс.
zih вне форума Ответить с цитированием
Старый 20.10.2010, 23:57   #5
zih
Пользователь
 
Регистрация: 14.10.2010
Сообщений: 15
По умолчанию

А как найти количество пикселей уже заранее известного цвета в формате ffffffff в image? Заранее спасибо кто ответит и прошу сильно не ругать
zih вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoIt Подсчет кол-ва пикселей определенного цвета в определенной области активного окна z3xix13 Помощь студентам 0 02.10.2010 14:27
поиск цвета пикселей nolz Общие вопросы Delphi 1 27.05.2010 13:30
Подсчет ячеек определенного цвета в StringGrid Juliya_U Компоненты Delphi 4 22.04.2010 22:39
найти количество кубиков данного цвета и их суммарный обьем? Alex_sim Общие вопросы C/C++ 7 09.03.2010 13:48
Таблица пикселей bl0w Мультимедиа в Delphi 1 19.01.2009 00:32