Выделить двигающийся объект.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Выделить двигающийся объект.

Сообщение meren » 05.03.2005 (Сб) 10:12

Есть камера с поворотным устройством,хочу ,чтобы она поворачивалась за передвигающимся объектом.
Помогите

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 05.03.2005 (Сб) 10:24

//<-
Mit freundlichen Grüßen
//->

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 10:54

codemaster писал(а):http://sourceforge.net/projects/motion/ пойдет?


Надо самому на VB

Но ,все таки спасибо...

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 05.03.2005 (Сб) 11:04

meren писал(а):
codemaster писал(а):http://sourceforge.net/projects/motion/ пойдет?


Надо самому на VB

Но ,все таки спасибо...


на VB гиблое это дело
но если очень хочется то посмотри
это
http://www-2.cs.cmu.edu/~kiranb/motionD ... ICME00.pdf
//<-
Mit freundlichen Grüßen
//->

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 11:32


на VB гиблое это дело


Почему гиблое ?

Костя
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 14.02.2005 (Пн) 6:45
Откуда: Новосибирск

Сообщение Костя » 05.03.2005 (Сб) 11:34

Вообще-то для программирования систем машинного зрения существуют специальные средства... Это задача из разряда АСУ. Поищи в яндексе ссылки на такие системы.
Всё бывает!

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 05.03.2005 (Сб) 12:14

Для выделения движущегося обьекта нужно 2 кадра.
1 Статика-шаблон
2 С двигающимся обьектом
Затем попиксельно сравниваешь рисунки и все что не будет совпадать и будет твоим движущимся объектом.
Конечно на самом деле все немного сложнее.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 05.03.2005 (Сб) 12:18

meren писал(а):

на VB гиблое это дело


Почему гиблое ?


Очень много всяких факторов.
Сколько движущихся объектов будет в кадре?
Тип(ы) объекта, скорость?
Как меняется освещенность и пр.
Быстродействие?


Наш отдел писал софт по считыванию номерных знаков
проезжающих автомобилей. Этот гемор надолго запомнится всем
сотрудникам.

Одним словом забей и возьми что нибудь готовое.
//<-
Mit freundlichen Grüßen
//->

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 13:37


Одним словом забей и возьми что нибудь готовое.


Для себя хочу, а то давно забил..

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 13:44

Inferno писал(а):Затем попиксельно сравниваешь рисунки .


Это и надо.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 05.03.2005 (Сб) 13:51

meren писал(а):
Inferno писал(а):Затем попиксельно сравниваешь рисунки .


Это и надо.


попиксельно на VB6 при условии движения объекта?
ну ну :lol: :lol:
//<-
Mit freundlichen Grüßen
//->

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 13:59

Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Dim PicBits() As Byte, PicInfo As BITMAP
Dim Cnt As Long, BytesPerLine As Long
Private Sub Command1_Click()
'2я картинка
GetObject Picture2.Image, Len(PicInfo), PicInfo
BytesPerLine = (PicInfo.bmWidth * 3 + 3) And &HFFFFFFFC
ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight * 3) As Byte
GetBitmapBits Picture2.Image, UBound(PicBits), PicBits(1)
'1я картинка
GetObject Picture1.Image, Len(PicInfo), PicInfo
BytesPerLine = (PicInfo.bmWidth * 3 + 3) And &HFFFFFFFC
ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight * 3) As Byte
GetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)
''''''''''''''''''''''''''
For Cnt = 1 To UBound(PicBits)
PicBits(Cnt) = 'Я идиот! Убейте меня, кто-нибудь!?? как организовать разницу
Next Cnt
'''''''''''''''''''''''''''''
SetBitmapBits Picture2.Image, UBound(PicBits), PicBits(1)
Picture2.Refresh
End Sub

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 05.03.2005 (Сб) 15:01

Ну попиксельно не обязательно. Можно разбить изображения на блоки 10*10 или что-то вроде этого. Найти средний цвет блока и сравнить со средним цветом блока следуюшего кадра (если разница в цвете больше определённого числа). Так можно найти движение. И если ещё поработать то можно и определить направление движения. Я когда-то делал программу определения движений, но без вращения камеры. (Идея появилась после того, как посмотрел Resident Evil, где камера людей детектила... :) ).

А вот про смену яркости и освещения в комнате - это да. Сильно сбивает программу. Да и камера сама постоянно меняла настройку яркости...
Программисты не глючат - глючат компиляторы...

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 15:22

CodeName33 писал(а):
А вот про смену яркости и освещения в комнате - это да. Сильно сбивает программу. Да и камера сама постоянно меняла настройку яркости...

Если захват второго кадра через 0.5 сек освещение не изменится,я думаю

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 05.03.2005 (Сб) 15:55

meren, иногда успевает. Если камера дешёвая и постоянно пытается правильную цветность подобрать...
Программисты не глючат - глючат компиляторы...

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 05.03.2005 (Сб) 16:11

CodeName33 писал(а):meren, иногда успевает. Если камера дешёвая и постоянно пытается правильную цветность подобрать...

А дорогие не подбирают цветность?

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 05.03.2005 (Сб) 22:42

meren, подбирают, но качество изображения и цветопередача у них лучше и автоподгонка RGB не скачет так резко как на дешёвых.
Программисты не глючат - глючат компиляторы...

artyuha
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 07.09.2004 (Вт) 3:47

Сообщение artyuha » 06.03.2005 (Вс) 2:37

А ты не подумал, что кроме поступательного движения объект может совершать и вращательное. Так что тупое сравнение на смещение образа тут не покатит. Алгоритм тут действительно не так прост.

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 06.03.2005 (Вс) 10:34

artyuha писал(а):А ты не подумал, что кроме поступательного движения объект может совершать и вращательное. Так что тупое сравнение на смещение образа тут не покатит. Алгоритм тут действительно не так прост.


А какая разница какое движение, если реагирование происходит по изменению пикселей.

artyuha
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 07.09.2004 (Вт) 3:47

Сообщение artyuha » 06.03.2005 (Вс) 23:28

Не дай бог наблюдать твоему детищу колыхающуюся штору (например) – привод сгорит только так. :lol: :lol: :lol:

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 07.03.2005 (Пн) 10:05

artyuha писал(а):Не дай бог наблюдать твоему детищу колыхающуюся штору

Я ее гвоздиком к стеночке...
Угол по координатам найти помоги
Atn(Y - Y1) / (X - X1) * 180 / pi
как с отрицательным быть ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.03.2005 (Пн) 15:23

meren писал(а):Угол по координатам найти помоги
Atn(Y - Y1) / (X - X1) * 180 / pi
как с отрицательным быть ?

http://bbs.vbstreets.ru/viewtopic.php?p=77099#77099
Изображение

meren
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 11.02.2005 (Пт) 8:49

Сообщение meren » 07.03.2005 (Пн) 21:26

[quote="tyomitch"][/quote]
Спасибо . С меня причитается.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 169

    TopList