Seite 1 von 3

TV Bluebox am PC Realisieren

Verfasst: 18.07.2009 22:13
von Joel
Hi,

Die Tagesschau z.B. macht ihre Hintergründe ja, indem die Moderatoren hinter Blueboxen stehen. Gibt es Freeware für den PC, die diesen Farbton in einen Hintergrund ersetzen?

Wenn nien, wäre sowas mit PB möglich (gibt es Ansätze)?

Verfasst: 18.07.2009 22:55
von teejex
Hi

ob es solche Freeware Programme gibt,
weiss ich nicht.

Aber es ist bestimmt mit PB möglich:

Als erstes sollte man per

Code: Alles auswählen

Farbe = Point(x, y)
herausfinden, wo diese Bluebox ist.
Hat man die Koordinaten der Bluebox, muss man nur die Farbe des Pixels im einzufügenden Bild herausfischen(Point(x,y)) und per Plot auf das Gesamtbild draufpixeln.

Werd mich gleich mal dran versuchen... xD kp ob was draus wird

MfG
Jan

Edit: ob es Ansätze oder Freeware Programme gibt, findest du mit der Suche bzw. einer Suchmaschinen(MS Bing,google usw.)[/url]

Verfasst: 18.07.2009 23:08
von Joel
Ok, das wäre Super, also Freeware gibt es da scheinbar nicht für. Aber für ansätze, die Blau in Bilder übersetzen udnd en Rest über den Hinetrgrund überlagern, wäre ich dankbar.

Verfasst: 19.07.2009 00:58
von Kaeru Gaman
frag mal Zeha, der hat zumindest ne software gehabt um zwei filmsequenzen übereinander zu rendern...
Als erstes sollte man per
Farbe = Point(x, y)
herausfinden, wo diese Bluebox ist.
yo, mahlzeit!

nen Drawing-Zugriff für life-Bildbearbeitung?

und den Teleprompter meißelt jemand in stein? das wär nämlich auch nicht langsamer...

Verfasst: 19.07.2009 02:17
von teejex
Hi
Kaeru Gaman hat geschrieben: und den Teleprompter meißelt jemand in stein?
Scheint nen flottes Kerlchen zu sein ;-)


Bitte nicht über den Code lachen - ich Arbeite eher selten mit PB
Er funktioniert, und das ist wohl die Hauptsache ;-)
Zur verfeinerung sollte man evtl. noch schauen, ob das nicht nur ein einzelner Pixel war, der die gleiche Farbe hatte wie die Bluebox, sondern wirklich eine ganze Ansammlung dieser Farbe.
Ist die obere linke Ecke verdeckt, funktioniert das ganze natürlich auch nicht mehr ... aber du(Joel) wolltest ja auch nur einen Ansatz - hier ist er xD ->

Edit: Bsp Fotos werden gleich hochgeladen und hier eingefügt....
Bild+Bild-->Bild

Code: Alles auswählen

UsePNGImageDecoder()
UsePNGImageEncoder()

#rTol=30
#gTol=30
#bTol=30

; Die Werte, die ein Pixel haben muss, damit er für einen Teil der Bluebox gehalten wird:
#rMin=0-#rTol
#gMin=0-#gTol
#bMin=255-#bTol

; höhe/breite des Bildes
imgW=200
imgH=200

;höhe/breite des einzufügenden Bildes
insW=179
insH=79

; position der bluebox, wird später errechnet
posOfInsertX=-1;
posOfInsertY=-1;

img = CatchImage(#PB_Any, ?image)
ins = CatchImage(#PB_Any, ?insert)


ins_out = ImageOutput(ins)
Dim insColors(insW,insH) ; farbenarray für insert erstellen

StartDrawing(ins_out)
  
  For x=0 To insW
    For y=0 To insH
      insColors(x,y)=Point(x,y);farbwerte im array speichern
    Next
  Next
StopDrawing()

img_out = ImageOutput(img)
StartDrawing(img_out)
  For x=0 To imgW 
    For y=0 To imgH
      c=Point(x,y) ; farbe des punktes holen und in c (color) speichern
      ; dann per Red(c),Green(c);Blue(c) die einzelnen Farbwerte auslesen und schauen, ob sie im akzeptablen bereich liegen:

      If  Red(c)>=#rMin    And Red(c)<=#rMin+#rTol And Green(c)>=#gMin  And Green(c)<=#gMin+#gTol And Blue(c)>=#bMin  And Blue(c)<=#bMin+#bTol
        posOfInsertX=x;
        posOfInsertY=y;
        Break ; schleife verlassen
      EndIf
    Next
  
    If(posOfInsertX<>-1)
      Break ; schleife verlassen
    EndIf
  Next  
  
  Debug "Insert Pos:"
  Debug posOfInsertX
  Debug posOfInsertY
  
  
  For x=0 To insW
    For y=0 To insH
      plotX=x+posOfInsertX
      plotY=y+posOfInsertY
      If(plotX>0 And plotX<imgW   And   plotY>0 And plotY<imgH)
        c=Point(plotX,plotY) ; farbe des punktes holen und in c (color) speichern
        ; dann per Red(c),Green(c);Blue(c) die einzelnen Farbwerte auslesen und schauen, ob sie im akzeptablen bereich liegen:
  
        If  Red(c)>=#rMin    And Red(c)<=#rMin+#rTol And Green(c)>=#gMin  And Green(c)<=#gMin+#gTol And Blue(c)>=#bMin  And Blue(c)<=#bMin+#bTol
          Plot(plotX,plotY,insColors(x,y)) ; auf das image mit bluebox plotten
        EndIf
      EndIf
    Next
  Next
  
  Ergebnis = SaveImage(img, "C:\Users\admin\Desktop\IMAGE__.PNG" , #PB_ImagePlugin_PNG)
  
StopDrawing()

End

DataSection
  image: IncludeBinary "image.png"
  insert: IncludeBinary "insert.png"
  
EndDataSection

Verfasst: 19.07.2009 10:25
von Joel
Ok, vielen Dank!!!! Werde den Code "Analysieren" :D

Melde mich später wieder!

Verfasst: 19.07.2009 11:38
von Vermilion
Ob es dafür Freeware gibt, bezweifle ich. Aber ich wette, mit Adobe Premiere kann man das machen. Und einem ähnlichen Apple Pendant. Die sind ja so die professionellsten Programme dafür (wohl aber auch zwei der teuersten).

Ansonsten... Selber coden, ich würde lieber gleich einen Ansatz mit 3D Beschleunigung versuchen, Stichwort Blending Modes. Oder eben alles manuell im Speicher imkrempeln, wie auch immer.

Verfasst: 19.07.2009 13:02
von teejex
Es gibt auch die Möglichkeit, das gleiche mit z.B. Gimp zu machen:

Man läd das Hauptbild, markiert dort alle blauen Pixel, und löscht die dann per Entfernen (dafor sollte man dem Bild einen Alpha-Kanal gegönnt haben)

Als nächstes erstellt man eine neue Ebene, in diese Packt man das Bild, das eingefügt werden soll - verschiebt es an die richtige Stelle, und schwupp die wupp xD guckt es an den betreffenden Stellen durch, also da, wo vorher die Bluebox war.

Die Funktion nennt sich "Nach Farbe auswählen"(Eine Hand die auf Blau/Rot/Grün zeigt)

MfG
Jan

Verfasst: 19.07.2009 13:16
von Vermilion
Ja achwas. /:->

Aber wenn ich mich nicht irre, geht es hier wohl um Echtzeitvideobearbeitung. Und kommst du mit Gimp nicht weit.

Verfasst: 19.07.2009 14:29
von TomS
Vermilion hat geschrieben:Ja achwas. /:->

Aber wenn ich mich nicht irre, geht es hier wohl um Echtzeitvideobearbeitung. Und kommst du mit Gimp nicht weit.
Dass es echtzeit sein muss, hat er mit keinem Wort erwähnt. Aber dann helfen auch Adobe Premiere und Konsorten nicht weiter.