Webcam
Übersicht

AppartBetreff: Webcam |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Ich versuche eine art eyetoy in bb zu coden. Jedoch ist mein momentaniges Programm zu langsam. Könnte vlt. jemand der sich mit banks auskennt mir helfen ?? Hier ist mein source: Code: [AUSKLAPPEN] capwindowx = 1; 1 use capwindowy = 1; 1 this capwindoww = 1; 1 to capwindowh =1 ; 1 make a small previewwindow at 1,1 with 1*1 pixels (invisible ;) ) previewrate = 9 ; play here to get better fps from driver PokeInt inbank,0, capwindowx PokeInt inbank,4, capwindowy PokeInt inbank,8, capwindoww PokeInt inbank,12, capwindowh PokeInt inbank,16, previewrate PokeInt inbank ,24,FakeBank+4 CallDLL("METHYL","SETDATA",inbank,outbank) ; CallDLL ("METHYL","START") CallDLL("METHYL","SETFORMAT") ; call videoformat CallDLL ("METHYL","SETSOURCE") ;call videosource CallDLL ("METHYL","SETPREVIEWON") CallDLL ("METHYL","SETPREVIEWOFF") img=CreateImage(1,1) ;<- fakeimage To get the driversettings buffer1 =CreateBank((ImageWidth (img)*ImageHeight (img)*4)) ok = CallDLL ("METHYL","GETCLIP",inbank,buffer1) driverimagew = PeekInt ( inbank,0) driverimageh = PeekInt (inbank,4 ) driverdepth = PeekInt (inbank,8) FreeImage img FreeBank buffer1 img=CreateImage(driverimagew,driverimageh) Global buffer =CreateBank((ImageWidth (img)*ImageHeight (img)*4)) Global showbuffer =CreateBank(driverimagew*driverimageh*4) ok = CallDLL ("METHYL","GETCLIP",inbank,buffer) ok = CallDLL ("METHYL","CONTFRAME") ;<- start capturing CallDLL ("METHYL","SETPREVIEWON") pos = LoadImage("pos.bmp") Dim ex(10000) Dim ey(10000) Repeat Cls SetBuffer ImageBuffer(img) LockBuffer ImageBuffer(img) pointer =0 ok = CallDLL ("METHYL","STOPPFRAME") ; <- stopp preview ! For y = 0 To ImageHeight (img)-1 For x = 0 To ImageWidth (img)-1 rgb = PeekInt (buffer,pointer) WritePixelFast(x,y,rgb) pointer =pointer + 4 Next Next UnlockBuffer ImageBuffer(img) ok = CallDLL ("METHYL","CONTFRAME") ; continue capturing SetBuffer BackBuffer() DrawImage img ,0,0 SaveImage img, "neu.bmp" img1 = LoadImage("old.bmp") SaveImage img, "old.bmp" img2 = LoadImage("neu.bmp") i = 0 DrawImage img ,0,0 For y = 0 To ImageHeight (img1)-1 Step 6 For x = 0 To ImageWidth (img1)-1 Step 6 SetBuffer ImageBuffer(img1) LockBuffer ImageBuffer(img1) rgb=ReadPixelFast(x,y) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF bl1 = r+g+b SetBuffer ImageBuffer(img2) LockBuffer ImageBuffer(img2) rgb=ReadPixelFast(x,y) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF bl2 = r+g+b If bl2 - bl1 < -250 i = i+1 ex(i) =x ey(i) =y EndIf If bl2 - bl1 > 250 i = i+1 ex(i) =x ey(i) =y EndIf Next Next SetBuffer BackBuffer() For abz = 0 To i DrawImage pos,ex(abz),ey(abz) Next Flip FreeImage(img1) FreeImage(img2) Until KeyHit(1) ok = CallDLL("METHYL","ENDCAP") ; <- Stop capture unload dll End Und die METHYL.dll [url]http://uploaded.to/file/bur3eu[/url] MFG Appart |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kenne mich mit Banken aus, aber trotzdem habe ich keine Lust mir das Schlamassel anzutun. Der Code ist in erster Linie nicht eingerückt. Das solltest du dir wirklich als aller erstes angewöhnen. Wenn du keine Lust hast selber auf Tab zu drücken, installier dir eine gescheite IDE. Da würde ich dir IDEal empfehlen. Die Standard-IDE von Blitz ist Mist.
Denoch will ich mal ein paar Tipps geben: - Alle Werte aus irgendwelchen Funktion die du in einer Schleife benötigts, speichere sie in eine Variable. Also statt ewig das Handle von ImageBuffer(Img) und ähnliches auszulesen, speichere es einmal vorher ab und setze diese dann ein. - Write/ReadPixelFast ist wirklich sehr viel schneller als das ohne Fast, aber das nützt dir wenig, wenn du für jeden Pixel extra den Puffer sperrst und ihn anschliessend wieder entsperrst. Mach das ausserhalb einer Schleife. | Ansonsten wird es schwirig über Blitz ein schnelles Eyetool zu programmieren, da dafür schon ein wenig mehr gehört, als ein paar Zeilen Code. Blitz ist auch für solche Sachen nicht ausgelegt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group