lustiger videoeffekt [alle bb]
Übersicht

$tankYBetreff: lustiger videoeffekt [alle bb] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab mich ma n bisschen mit read/writepixel(fast) beschäftgigt und diesen witzigen code geschrieben ![]() Code: [AUSKLAPPEN] ;Bei Bewegung rot, sonst grün Const toleranz=10 file$=RequestFile$("Video laden","") ; file$ bei anderen bb ausser bb+ durch datei ersetzen! If FileType(file$)<>1 RuntimeError "Konnte Video nicht laden!" video=OpenMovie(file$) width=MovieWidth(video) height=MovieHeight(video) Dim oldpixel(width,height) Dim pixel(width,height) Graphics width,height,0,2 SetBuffer BackBuffer() Repeat Cls DrawMovie(video,0,0) start=MilliSecs() LockBuffer BackBuffer() For i=0 To width For j=0 To height oldpixel(i,j)=pixel(i,j) pixel(i,j)=ReadPixelFast(i,j) comparepixel(i,j,oldpixel(i,j),pixel(i,j)) Next Next UnlockBuffer BackBuffer() Color 0,0,255 Text 0,0,MilliSecs()-start Flip Until KeyHit(1) Or MoviePlaying(video)=0 Function comparepixel(x,y,rgb1,rgb2) r1=(rgb1 And $FF0000)/$10000 g1=(rgb1 And $FF00)/$100 b1=rgb1 And $FF r2=(rgb2 And $FF0000)/$10000 g2=(rgb2 And $FF00)/$100 b2=rgb2 And $FF If Abs((r1+g1+b1)-(r2+g2+b2))>toleranz Then rgb=255*$10000 + 0*$100 + 0 WritePixel(x,y,rgb) Else rgb=0*$10000 + 255*$100 + 0 WritePixel(x,y,rgb) EndIf End Function der code prüft ein video auf pixelfarbenänderung und färbt die pixel in rot, welche sich verändert haben, der rest bleibt grün! |
||
- Zuletzt bearbeitet von $tankY am Mo, Jan 02, 2006 22:31, insgesamt einmal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi sieht nice aus. | ||
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey
ist n schöner effekt, gefällt mir gut... ich hatte mich dadran auch ma vor ner zeit versucht (sollte eigentlich die grundlage für so ne kleine bewegegungserkennersoftware mittels webcam werden... dummerweise scheiter ich an der einbindung der webcam xD)... naja, das is jedenfalls bei mir rausgekommen: Code: [AUSKLAPPEN] Const xsize=400 Const ysize=300 Dim pixel(xsize,ysize) toleranz=10 Const pixel_anzahl=xsize*ysize p_anzahl1=pixel_anzahl/2 Const bewegometer#=500.0/pixel_anzahl Graphics 800,600,32,2 SetBuffer BackBuffer() ClsColor 150,150,150 stream=OpenMovie("test.avi") Repeat DrawMovie stream,0,0,xsize,ysize Color 255,0,0 If RectsOverlap(MouseX(),MouseY(),1,1,0,0,xsize*2,ysize) Then Rect 0,0,xsize*2,ysize,0 If MouseHit(1) Then draw=1-draw EndIf If toleranz<10 Then toleranz=toleranz+MouseZSpeed() Else toleranz=toleranz+MouseZSpeed()*5 EndIf If toleranz<0 Then toleranz=0 If toleranz>255 Then toleranz=255 Text 10,ysize+20,"Toleranz: "+toleranz If MilliSecs()-fps_timer>1000 Then fps=counter counter=0 fps_timer=MilliSecs() EndIf counter=counter+1 Text 10,ysize+35,"FPS: "+fps LockBuffer() For x=0 To xsize Step 3 For y=0 To ysize Step 3 c=ReadPixelFast(x,y) r=(c And $FF0000)/$10000 g=(c And $FF00)/$100 b=c And $FF a=(r+g+b)/3 r2=(pixel(x,y) And $FF0000)/$10000 g2=(pixel(x,y) And $FF00)/$100 b2=pixel(x,y) And $FF a2=(r2+g2+b2)/3 If Abs(a-a2)>=toleranz Then r=Abs(a1-a2) : g=Abs(a1-a2) : b=0 z=z+9 d=a*$1000000 + r*$10000 + g*$100 + b If draw=0 Then WritePixelFast x+xsize,y,d WritePixelFast x+xsize+1,y,d WritePixelFast x+xsize,y+1,d WritePixelFast x+xsize+1,y+1,d WritePixelFast x+xsize+2,y,d WritePixelFast x+xsize,y+2,d WritePixelFast x+xsize+2,y+1,d WritePixelFast x+xsize+1,y+2,d WritePixelFast x+xsize+2,y+2,d Else WritePixelFast x,y,d WritePixelFast x+1,y,d WritePixelFast x,y+1,d WritePixelFast x+1,y+1,d WritePixelFast x+2,y,d WritePixelFast x,y+2,d WritePixelFast x+2,y+1,d WritePixelFast x+1,y+2,d WritePixelFast x+2,y+2,d EndIf EndIf pixel(x,y)=c Next Next UnlockBuffer() Color 220,0,0 Rect 150,500,bewegometer*z,50 Color 0,0,0 Text 400,450,"BEWEG - O - METER",1,1 Text 400,470,"Anzahl Bewegungen zwischen zwei Frames",1 Text 150,560,"0",1 Text 650,560,pixel_anzahl,1 Text 400,560,p_anzahl1,1 Rect 150,500,500,50,0 For x=170 To 640 Step 20 Rect x,525,2,25 Next average=average+z az=az+1 ;Durchschnitt bewegungen / sekunde If timer+1000<MilliSecs() Then timer=MilliSecs() average=average/az av=average az=0 average=0 EndIf Color 255,0,0 Text 10,ysize+50,"Veränderte Pixel: "+av If z/3>av Then Text 10,420,"SZENENWECHSEL!" z=0 Flip Cls Until KeyHit(1) Or MoviePlaying(stream)=0 End sry, ist teilweise ziemlich wirr, aber war ja eigentlich auch nich für die öffentlichkeit gedacht... naja^^... also nicht an diesem "szenenwechsel" und zeugs stören, dass funzt noch nich so zuverlässig ![]() |
||
Computer sind auch nur Menschen! ![]() |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dein Quelltext macht im prinzip das selbe wie meiner.
will eigentlich auch sowas wie ein bewegungserkenner machen ![]() |
||
![]() |
Waveblue |
![]() Antworten mit Zitat ![]() |
---|---|---|
konnte es nicht starten, tanky!
schreib mal hin, das es nur mit Blitzplus funktioniert! |
||
This is 10% luck
20% skill 15% concentrated power of will 5% pleasure, 50% pain and 100% reason to remember the name |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
lol, musst doch nur requestfile durch die file ersetzen, sry
Edit: so, hier is der rest (is nix besonderes, nur so spielereien^^) Edit #2: Da geocities bald schließt: Färbt das Video in verschiedene Graustufen ein: Code: [AUSKLAPPEN] ;Graufärbung (bb+, wenn man zeile 3 modifiziert, dann auch für den rest)
;(c) 2006 by $tanky aka Steven Cardoso file$=RequestFile$("Video laden","") If FileType(file$)<>1 RuntimeError "Konnte Video nicht laden!" video=OpenMovie(file$) width=MovieWidth(video) height=MovieHeight(video) Graphics width,height,0,2 SetBuffer BackBuffer() Repeat Cls DrawMovie(video,0,0) LockBuffer BackBuffer() For i=0 To width For j=0 To height GreyPixel(i,j) Next Next UnlockBuffer BackBuffer() Flip Until KeyHit(1) Or MoviePlaying(video)=0 Function GreyPixel(x,y) rgb=ReadPixelFast(x,y) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF a=((r+g+b)/3) rgb=a*$10000 + a*$100 + a WritePixel(x,y,rgb) End Function Invertiert die Farben eines Videos: Code: [AUSKLAPPEN] ;InvertColor (Vertauscht die Farben eines Videos)
;(bb+, wenn man zeile 4 modifiziert, dann auch für den rest) ;(c) 2006 by $tanky aka Steven Cardoso file$=RequestFile$("Video laden","") If FileType(file$)<>1 RuntimeError "Konnte Video nicht laden!" video=OpenMovie(file$) width=MovieWidth(video) height=MovieHeight(video) Graphics width,height,0,2 SetBuffer BackBuffer() Repeat Cls DrawMovie(video,0,0) LockBuffer BackBuffer() For i=0 To width For j=0 To height InvertPixel(i,j) Next Next UnlockBuffer BackBuffer() Flip Until KeyHit(1) Or MoviePlaying(video)=0 Function InvertPixel(x,y) rgb=ReadPixelFast(x,y) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF r=255-r g=255-g b=255-b rgb=r*$10000 + g*$100 + b WritePixel(x,y,rgb) End Function zeichnet das video in blöcke (größe definierbar): Code: [AUSKLAPPEN] ;VideoBlock (färbt die umgebenen Blöcke in die Farbe des ersten Blockes!)
;(bb+, wenn man zeile 6 modifiziert, dann auch für den rest) ;(c) 2006 by $tanky aka Steven Cardoso Const blocksize=10 file$=RequestFile$("Video laden","") If FileType(file$)<>1 RuntimeError "Konnte Video nicht laden!" video=OpenMovie(file$) width=MovieWidth(video) height=MovieHeight(video) Graphics width,height,0,2 SetBuffer BackBuffer() Repeat Cls DrawMovie(video,0,0) For i=0 To width Step blocksize For j=0 To height Step blocksize rgb=ReadPixel(i,j) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF Color r,g,b Rect i,j,i+blocksize,j+blocksize,1 Next Next Flip Until KeyHit(1) Or MoviePlaying(video)=0 Färbt die Pixel entweder in schwarz oder weiss: Code: [AUSKLAPPEN] ;SchwarzWeiss Färber (färbt die Pixel entweder in schwarz oder in weiss)
;(bb+, wenn man zeile 4 modifiziert, dann auch für den rest) ;(c) 2006 by $tanky aka Steven Cardoso file$=RequestFile$("Video laden","") If FileType(file$)<>1 RuntimeError "Konnte Video nicht laden!" video=OpenMovie(file$) width=MovieWidth(video) height=MovieHeight(video) Graphics width,height,0,2 SetBuffer BackBuffer() Repeat Cls DrawMovie(video,0,0) LockBuffer BackBuffer() For i=0 To width For j=0 To height SWPixel(i,j) Next Next UnlockBuffer BackBuffer() Flip Until KeyHit(1) Or MoviePlaying(video)=0 Function SWPixel(x,y) rgb=ReadPixelFast(x,y) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF a=((r+g+b)/3) If a<=127 Then a=0 Else a=255 EndIf rgb=a*$10000 + a*$100 + a WritePixel(x,y,rgb) End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group