Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> в какой последовательности надо делать?! 
:(
    Опции темы
hoshin
Дата 10.5.2010, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.5.2010

Репутация: нет
Всего: нет



Здравствуйте! Может, кто подскажет как решить эту задачу: 

есть bmp фотография 800х600, все пиксели белые, кроме одной, которая имеет черный цвет, который может находиться где угодно. 

Теперь сам вопрос, что мне необходимо сделать(как правильно подключить tbitmap или еще что ни будь), чтобы осуществить поиск этого черного пикселя, Т.Е. как мне осуществить попиксельный анализ этой фотографии. Я просто не могу понять что и в какой последовательности нужно мне делать. 

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

P.S. не судите строго, этой мой первый язык.

PM MAIL   Вверх
~FoX~
Дата 10.5.2010, 07:43 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Код

procedure TForm1.Button1Click(Sender: TObject);
var
  MyBmp: TBitmap;
  x, y: integer;
begin
  MyBmp := TBitmap.Create; //создали 
  MyBmp.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp'); //Путь к твоему фалу 
  for x := 0 to MyBmp.Width do
    for y := 0 to MyBmp.Height do begin
      if MyBmp.Canvas.Pixels[x, y] = clBlack then //если пиксель черный
      ShowMEssage('x=' + IntToStr(x) + ' y=' + IntToStr(y)); //тогда показываем его координаты
    end;

  MyBmp.Free; //почистили
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
AntonN
Дата 10.5.2010, 11:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



Scanline быстрее

Код

procedure FindPixel(filename:string; color:Tcolor);
const
   MaxPixelCountA = MaxInt div SizeOf(TRGBQuad);
type
   PRGBAArray = ^TRGBAArray;
   TRGBAArray = array[0..MaxPixelCountA-1] of TRGBQuad;
var bt:Tbitmap; x,y:integer;  Row:PRGBAArray; r,b,g:byte; br:boolean;
begin
  bt:=Tbitmap.Create;
  try
     bt.LoadFromFile(filename);
     bt.PixelFormat:=pf32bit;

     r:=GetRValue(color);
     g:=GetGValue(color);
     b:=GetBValue(color);
     br:=false;
     for y:=0 to bt.Height-1 do begin
       Row:=bt.ScanLine[y];
       for x:=0 to bt.Width-1 do begin
         if( (Row[x].rgbBlue=b)and(Row[x].rgbGreen=g)and(Row[x].rgbRed=r) ) then begin

            ShowMessage('X:'+inttostr(x)+'; Y:'+inttostr(Y));

            br:=true;
            break;
         end;
       end;
       if(br) then break;
     end;

  finally
    bt.free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FindPixel('3c839e14f5e7.bmp',clblack);
end;



--------------------
user posted image
PM MAIL WWW   Вверх
hoshin
Дата 14.5.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.5.2010

Репутация: нет
Всего: нет



Спасибо! на один шаг продвинулся вперёд по этой теме.

Хочу за одно еще спросить у знающих людей.

=====================================================================
ДАНО:
Все файлы имеют одно разрешение (1280х800) и формат (bmp).
в каждом файле нанесена цифра, которая находится в одном месте.

Цифра емеет цвет. Используя утилиту pixie, которая показывает координаты и цвет пикселя под курсором мыши (извиняюсь, если это будет рекламой), узнал точные данные по цвету, вот они

pixil at [328:432] - это координата первой цифры из даты
HEX 0xE4F7TT
HTML #EEF7E4
RGB (238, 247, 228)
CMYK (4,0,8,4)
HSV (89,8,97)

Фон за цифрой разный. 
Цифра не отсканирована и всегда четко видна, если быть точнее эта цифровая дата сохранения принскрина.
Шрифт цифры один и тот же.
====================================================================
Подскажите, как зная все эти данные (координаты, код цвета, которая выдала программа pixie), можно узнать есть этот цвет или нет.

Сразу отвечу на вопрос - "Зачем ему это нужно?".  У меня сохранилось очень много принскринов (более 1000), с которыми я работал. На каждом сохраненном принскрином файле стоит дата сохранения. Дата может иметь один из 13 цветов. Каждый цвет для меня означает определенный сайт. Теперь встала задача их рассортировать по дате и по цвету, и сохранить все это на dvd-r, конечно предварительно уменьшив их разрешение.
Для начала необходимо их рассортировать по цвету, т.е. по каждому сайту. Как можно узнать есть или нет в этих координтах цвет, который мне нужен, зная его код.
PM MAIL   Вверх
AntonN
Дата 14.5.2010, 18:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



Код

MyBmp.Canvas.Pixels[x, y]

цвет пикселя по координатам x;y


--------------------
user posted image
PM MAIL WWW   Вверх
hoshin
Дата 14.5.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.5.2010

Репутация: нет
Всего: нет



спасибо! как всё просто, когда знаешь.

може Вы ещё знаете, как можно сохранить в отдельный jpeg или bmp файл фрагмент изображени по определнным координатам.
PM MAIL   Вверх
Proxin
Дата 14.5.2010, 22:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

Репутация: 1
Всего: 3



bitblt в помощь.
PM MAIL   Вверх
AntonN
Дата 14.5.2010, 23:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



hoshin
могу показать где оно есть http://desksoft.ru/index.php?downloads=attachments&id=40


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.