Motion detection (zaznava gibanja)

Vse o večpredstavnosti (zvok, video, DirectShow in podobno).
Uporabniški avatar
Lee_Nover
Prispevkov: 3653
Pridružen: 20.05.2001 14:31:55

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Lee_Nover » 04.09.2001 13:20:45

delam eno app za video nadzor
ce ma kdo kak example kako narest motion detection bi biu prou hvalezn
sam sm ze naredu zadevo s ScanLine ... sam je to toooolk pocas ceprou naj bi blo zlo-super-hitr

uglavnem ... motion detection iz direkt video izvora
za primerjavo sta lahko 2 bitmapa

:)
.. my 2 c ..
- I hate noobs -

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Miha-R » 04.09.2001 13:39:19

Letos sem si na hitro spisal programček za nadzor stanovanja, medtem ko sem bil na morju. Vgradil sem tudi "motion detection" logiko:

Najprej sem obe zaporedni sliki pretvoril v črno belo (s sivimi odtenki, seveda), nato pa nad njima izvedel blend funkcijo. Potem sem obdelal rezultat - novo sliko. Če ni gibanja, je slika popolnoma črna, kjer pa so razlike, pa je slika svetlejša. Zapeljal sem se skozi bitno predstavitev slike in izračunal povprečno svetlost slike. Končno številko pa sem na koncu še malo umeril, da ne pride do lažnih alarmov.

Uporabil sem WebCam, slike pa sem pobiral tako preko DirectX kot VfW. Na koncu sem se odločil za VfW, ker je DirectX kuril preveč CPUja, verjetno zaradi slabo napisanih gonilnikov.
Za obdelavo slik sem uporabil super hitro knjižnico FastLIB.
Zadnjič spremenil Miha-R, dne 04.09.2001 13:41:01, skupaj popravljeno 1 krat.

Uporabniški avatar
Lee_Nover
Prispevkov: 3653
Pridružen: 20.05.2001 14:31:55

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Lee_Nover » 04.09.2001 14:20:16

zanimivo s tem blendingom
sam tut uporabljam vfw ker sm hotu bit neodvisn od vseh dodatkov

lahko mal bol natacn opises kako si pretovru u crno belo ?
ker jst sm to naredu s PixelFormat:=pf1bit; in tko naprej ...

pr men lih to predstavlja problem da je zlo pocasno 'pregledat' use pixle

mogoce bi mi lahko zadevo bolj podrobno opisu k s tem nism se nikol delu
lahko bi zadevo sam razviju sam bi seveda trajal ...
odkrivu bi toplo vodo kot se temu rece :)
.. my 2 c ..
- I hate noobs -

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Miha-R » 04.09.2001 14:53:43

Vse pretvorbe sem delal s FastLib knjižnico, ki jo resnično priporočam. Uporabil pa sem funkcijo Grayscale, potem sem spravil v 8-bitne sivine z ConvertTo, nato pa še primerjal obe sliki z DifBlend.

Koda, ki tole naredi, pa je nekako taka:
'

Koda: Izberi vse

'.trim(
    // get latest from TempBitmap
    DIB_Original.LoadFromHandle(TempBitmap.Handle);

    // move previous picture
    DIB_Previous.MakeCopy(DIB_Latest, True);
    // save latest picture
    DIB_Diff.LoadFromHandle(Bitmap.Handle);
    FConvert.ConvertTo(DIB_Diff, CONST_BPP);  // CONST_BPP = 16
    FastFX.Grayscale(DIB_Diff, DIB_Latest);

    DIB_Diff.MakeCopy(DIB_Previous, True);
    FastFX.Grayscale(DIB_Diff, DIB_Previous);
    FConvert.ConvertTo(DIB_Diff, 8);

    // make difference
    FastBlend.DifBlend(DIB_Diff, DIB_Previous, DIB_Latest);

    // calculate average
    Total := 0;
    for i := 0 to DIB_Diff.Width - 1 do begin
      for j := 0 to DIB_Diff.Height - 1 do begin
        Total := Total + DIB_Diff.GetPixelB(j, i);
      end;
    end;
    pbDiff.Position := Trunc(Total / (101376 / 2));
    pbDiff.Refresh;
    Label2.Caption := IntToStr(pbDiff.Position);

    // display all three images
    DIB_Latest.Draw(iLatest.Canvas.Handle, 0, 0);
    DIB_Previous.Draw(iPrevious.Canvas.Handle, 0, 0);
    DIB_Diff.Draw(iDiff.Canvas.Handle, 0, 0);

    iLatest.Refresh;
    iPrevious.Refresh;
    iDiff.Refresh;
, "

").'
''

Khey
Prispevkov: 75
Pridružen: 23.05.2001 00:33:08

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Khey » 04.09.2001 14:59:50

A mi lahko pokazes kodo, kako si jemal slike prek Directx ali pa VFW, ker me zanima, saj tega ne nam. Lahko pa tudi, ce je zadeva stroga tajnost.

Khey
Prispevkov: 75
Pridružen: 23.05.2001 00:33:08

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Khey » 04.09.2001 15:04:32

sem se zmotu, hotel sem reci: Lahko pa tudi ne, ce je zadeva stroga tajnost.

Uporabniški avatar
Lee_Nover
Prispevkov: 3653
Pridružen: 20.05.2001 14:31:55

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Lee_Nover » 04.09.2001 15:15:51

ok miha hvala .. vidm da bo dost pomagal tole :)
ce bom pa se kej ti bom pa sporocu
.. my 2 c ..
- I hate noobs -

Uporabniški avatar
Lee_Nover
Prispevkov: 3653
Pridružen: 20.05.2001 14:31:55

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Lee_Nover » 04.09.2001 15:16:27

... spreminjam post ker je bla trenutna napaka v forumu
tko da sm 'isti' post se 1x dodal ker sm mogu se 1x napisat
in spet mi je javl napako ... sam dodal je pa vseen
no ja ... kokr kol tnx :) pa je ze postiman
Zadnjič spremenil Lee_Nover, dne 04.09.2001 16:01:16, skupaj popravljeno 1 krat.
.. my 2 c ..
- I hate noobs -

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Miha-R » 04.09.2001 15:28:02

Khey, sej ni kej za skrivat - na netu maš cel kup primerov, kako to narediti. Tule je direktni DL, za več primerov pa si poglej še efg's Computer Lab, Video for Windows (VFW).

Khey
Prispevkov: 75
Pridružen: 23.05.2001 00:33:08

Motion detection (zaznava gibanja)

Odgovor Napisal/-a Khey » 04.09.2001 15:37:42

O hvala, si bom stvar ogledal.

Odgovori