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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2009, 10:56   #1
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию Определить желтый,красный или зеленый цвет находится в bmp

уважаемые программисты,возник маленький вопросик,искал в интернете,но чего-то не разобрался сам.Есть изображение с черным фоном,на нем могут находиться цвета либо красный(RGB 255 0 0),либо зеленый(RGB 0 255 0),либо желтый(RGB 255 255 0),так вот нужно быстро просканировать изображение на ниличе этих цветов,и указать какой именно цвет находится на изображении.
Спасибо большое!!!
rekrow вне форума Ответить с цитированием
Старый 20.11.2009, 10:58   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

В цикле проходишся по каждому пикселю имея с собой три флага и смотришь Image1.Picture.BitMap.Canvas.Pixels[X,Y]
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.11.2009, 11:10   #3
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

насколько я начитался,canvas достаточно медленная функция,а как насчет реализации scanline'а?
rekrow вне форума Ответить с цитированием
Старый 20.11.2009, 11:11   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вот недавно была моя тема с проблемой замены цвета: 55 582 пикселя за 2 секунды. Суди сам.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.11.2009, 11:13   #5
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

а ссылочку на топик дай пожалуйста...
rekrow вне форума Ответить с цитированием
Старый 20.11.2009, 11:14   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вот скан: http://www.programmersforum.ru/showt...light=ScanLine
Вот моя тема: http://www.programmersforum.ru/showthread.php?t=71497
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.11.2009, 11:50   #7
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

Огромное спасибо,очень полезные ссылочки.

Последний раз редактировалось mihali4; 20.11.2009 в 13:25.
rekrow вне форума Ответить с цитированием
Старый 20.11.2009, 14:18   #8
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

В чем ошибка?

procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
DC: HDC;
X,Y:SmallInt;
begin
bmp:=TBitmap.Create;
bmp.Height:=9;
bmp.Width:=57;
DC:=GetDC(0);
bitblt(bmp.Canvas.Handle, 0, 0, 57, 9,DC, 854, 116, SRCCOPY);
bmp.SaveToFile('Screen.bmp');
ReleaseDC(0, DC);

For Y:=0 to bmp.Height - 1 do
For X:=0 to bmp.Width - 1 do
Begin
If bmp.Canvas.Pixels[X,Y] = $FF0000 Then
ShowMessage('Red!');
End;
end;

Копирует изображение экрана,успешно обрезает по нужным координатам,но не находит красный цвет в этом изображении,хотя точно есть там...помогите,пожалуйста.Спасибо!
rekrow вне форума Ответить с цитированием
Старый 20.11.2009, 14:30   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Точно есть 0xff0000 ? Или вы на "глаз" решили что там есть красный ?

p.s. уже привык к C++ и не вспоминаю такие проблемы, а у вас случаем утечки нет ? TBitmap создали, поработали а где .Free ?
BOBAH13 вне форума Ответить с цитированием
Старый 20.11.2009, 14:43   #10
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

if image1.picture.bitmap.canvas.pixels[1,1]=RGB(000000) then ...
непроверял но должно работать
beemoto вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертер из png в jpg или gif или bmp Квэнди Мультимедиа в Delphi 8 04.10.2011 22:26
Узнать цвет пикселя в Timage, если там не bmp а jpeg? TwiX Общие вопросы Delphi 4 27.09.2009 19:11
Как определить находится ли диск в системе? dolphin705 Общие вопросы Delphi 6 08.07.2009 12:25
Задана точка с координатами (x, y). Определить, на какой оси или в каком квадранте она находится. С++ Wia Помощь студентам 4 13.12.2008 14:17