Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

детектор движения на Delphi

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> детектор движения на Delphi
Имя
Сообщение << Старые топики   Новые топики >>
детектор движения на Delphi - 2008-05-21 13:32:29.250000   
eDevil

Сообщений: 51
Оценки: 0
Присоединился: 2005-09-07 16:56:58


Доброго времени суток!!!
как и обещал , что напишу по веб камере и видео захвату (в принципе нам не важно что из них конкретно, так как подход един ;) )

начнем….. ждя начала нам необходимы будут компоненты…
VideoLab и VisionLab,откуда они появились у меня я не помню… а вам нашел ссылку http://www.vanixshare.com/folder/8ca63673-5409-43e4-8fa3-33866d0c6b4d/delphi_components?system=rapidshare
вроде тут есть все что нужно!

сегодня мы будем делать детектор движения! (не думайте что это очень сложно,у нас есть почти все готовое!!)

итак предположим что мы все скачали и установили компоненты в делфи)) (насколько помню с установкой компонентов приключений не возникало!)

открываем Delphi и создаем новое приложение…
 из вкладки VideoLab бросаем на форму: VLDSCapture1 (сам видео захват), VLGenericFilter1 (фильтр для обработки данных), VLDSVideoPreviewDock1 (дисплей для просмотра сигнала с захвата), VLImageDisplay1 (дисплей для вывода результатов работы детектора движения)
из вкладки VisionLab: VLMotionDetect1 (сам детектор движения)
из вкладки Standart: MainMenu1 (основное меню)
из вкладки Additional: StringGrid1 (сетка для отображение "весовых коэффициентов движения")

вроде все что надо…

теперь начнем настраивать….
VLDSCapture1:
в VideoPreview указываем компонент VLDSVideoPreviewDock1 ,&nbsp; Enable перещелкиваем на TRUE; (указываем захвату куда отправлять видео!)
VLGenericFilter1:
SyncronizeType указваем stSingleBuffer (изпользвать одиночный буфер для обработки)
InuptPin выбираем VLMotionDetect1.MotionOutputPin (подключаем виртуальный штекер от "выхода" компонента детектора движения ко "входу" фильтру)
VLDSVideoPreviewDock1:
здесь только Stretch меняем на True (указваем дисплею растягивать\сжимать картинку по размерам самого дисплея)
VLImageDisplay1:
InputPin выбираем VLMotionDetect1.MotionOutputPin (подключаем виртуальный штекер от "выхода" компонента детектора движения на "вход" дисплея)
VLMotionDetect1 :
InputPin выбираем VLDSCapture1.OutputPin (подключаем виртуальный штекер от "выхода" компонента захвата&nbsp; на "вход" детектора движения)
SyncronizeType указваем stSingleBuffer (изпользвать одиночный буфер для обработки)
MainMenu1:
здесь создаем одно кнопу! назавем ее "выбрать источник видео"
StringGrid1:
здесь ,в принципе, только "косметика", убераем обрамление BorderStyle->bsNone , и FixedCols и FixedRows =0

так… с настройками закончили! 

начинаеться самое сладкое!))) (его сегодня вообще дифицит =( )

щелкаем на созданной нами кнопке MainMenu1 и в обработчике пишем следующее:
vldscapture1.VideoCaptureDevice.ShowDeviceSelctDialog; &nbsp;&nbsp;&nbsp; //будем выбирать устройство захвата vldscapture1.Enabled:=true; vldscapture1.Start;&nbsp;&nbsp;&nbsp; //включаем завхат form1.Caption:='fps='+IntToStr(vldscapture1.FrameRate.InstanceSize);&nbsp;&nbsp; // в caption будет&nbsp; количество fps &nbsp;vlmotiondetect1.Enabled:=true; //включаем детектор движения
дальше идем к фильтру! щелкаем на нем 2 раза  и пишем:
var &nbsp; I, J : Integer;&nbsp;&nbsp; //с помошью них будем считать кол-во столбцов и строк и обращаться к ним begin &nbsp; stringGrid1.ColCount := VLMotionDetect1.MotionGrid.Cols;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //создаем &nbsp; stringGrid1.RowCount := VLMotionDetect1.MotionGrid.Rows;&nbsp;&nbsp; //соответствие &nbsp; for I := 0 to StringGrid1.ColCount - 1 do &nbsp;&nbsp;&nbsp; for J := 0 to StringGrid1.RowCount - 1 do &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stringGrid1.Cells[ I, J ] := IntToStr( VLMotionDetect1.Items[ I, J ] );&nbsp;&nbsp; //заполняем StringGrid весовыми &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; коэфициентами движения &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;
и допишем немного на случай закрытия приложения:

vldscapture1.Stop;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //тушим vldscapture1.Enabled:=false;&nbsp;&nbsp; //захват &nbsp;vlmotiondetect1.Enabled:=false;&nbsp;&nbsp; //и детектор движения
p.s.: чуть не забыл….. вы можете менять размеры "сетки движения" изменив своиства VLMotionDetect1.motionGrid.Cols и Rows соответственно!

ну вот в принципе и все!..немного дописав это приложение(например выставить "порог" и поставить на него звуковую сигнализацию!) можно решать вполне серьезные задачи!))))



Post #: 1
RE: детектор движения на Delphi - 2008-05-21 23:06:49.973333   
VENOM4X

Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
Да, кул. Надо будет попробовать на базе этого что-нибуть сделать. Респект eDevil.;)
Post #: 2
RE: детектор движения на Delphi - 2008-05-22 01:11:26.040000   
VViskas =[O_o]=

Сообщений: 145
Оценки: 0
Присоединился: 2008-01-01 02:25:50.893333
+ за старание, но вредебы в хакере уже была статья на ету тему :)
Post #: 3
RE: детектор движения на Delphi - 2008-05-22 13:09:56.180000   
eDevil

Сообщений: 51
Оценки: 0
Присоединился: 2005-09-07 16:56:58
quote:

ORIGINAL: VViskas =[O_o]=

+ за старание, но вредебы в хакере уже была статья на ету тему :)

возможно я что-то пропустил…но не помню таких статей((
Post #: 4
RE: детектор движения на Delphi - 2008-05-23 00:54:38.496666   
VViskas =[O_o]=

Сообщений: 145
Оценки: 0
Присоединился: 2008-01-01 02:25:50.893333
quote:

ORIGINAL: eDevil
quote:

ORIGINAL: VViskas =[O_o]=
+ за старание, но вредебы в хакере уже была статья на ету тему :)

возможно я что-то пропустил…но не помню таких статей((

Видимо - ДА, ты чучуть пропустил :)
Хакер :: июль 07(103) 2007 :: стр. 112

Программерская сигнализация
Использование вебкамеры в паранойяльных целях
Еще несколько лет назад ныне забытый Даниил Шеповалов советовал настоящим параноикам организовывать программную сигнализацию для компьютера, основанную на веб?камере и программерских талантах вышеупомянутого душевнобольного :). Может быть, кому?то это и показалось шуткой, но лично я воспринял эту информацию всерьез. Ты тоже хочешь, чтобы к твоему компьютеру никогда не получил несанкционированный доступ какой?нибудь космический пришелец с 40?сантиметровым половым органом? Тогда читай эту статью!

(С) Андрей «LittLeBudda» Шкрыль
Post #: 5
RE: детектор движения на Delphi - 2008-05-23 09:37:56.390000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
мне друзья подарили веб-камеру. с ней в комплекте идет драйвер и софт. с помощью прилагаемого софта можно настроить съемку при движении. доступен ползунок, меняющий чуствительность.

колесо, тем более, что все реализация состоит их готовых компонентов.
Post #: 6
RE: детектор движения на Delphi - 2010-09-06 16:44:28.110000   
SnakeYAVA1

Сообщений: 1
Оценки: 0
Присоединился: 2010-09-06 16:37:28.716666
Как корректно можно по таблице определить направление движения?
Я сделал немного дурацким способом, направление определяет, но способ дурацкий. Я просто нахожу максимальное значение в таблице и смотрю насколько сместилось положение относительно предыдущего максимального значения таблицы.
Post #: 7
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> детектор движения на Delphi







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.