AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichnen auf Video?

Ein Thema von Quetzalcoatl · begonnen am 11. Apr 2007 · letzter Beitrag vom 14. Apr 2007
Antwort Antwort
Seite 2 von 4     12 34      
Quetzalcoatl

Registriert seit: 11. Apr 2007
30 Beiträge
 
#11

Re: Zeichnen auf Video?

  Alt 11. Apr 2007, 22:48
Danke für die Antwort.
Das mit dem Panel drüberlegen hab ich auch probiert. nur wird dann das Video einfach über das Panel drübergemalt, kann man irgendwas machen, das das 2. Panel immer über dem andern ist?
Eine andere Möglichkeit die auch funktioniert, ist ein 2.Form aufzumachen und das Transparent zu machen und genau über das Video zu setzen. Damit kann man dann auf das Video zeichnen. Nur.. wenn ich dann wieder auf das erste Form klicke, verschwindet das 2. wieder in den Hintergrund... kann man da was machen? also im Prinzip sowas wie Form2.showModal, sodass das 2. Formblatt immer über dem ersten ist, nur das man das erste auch noch benutzen kann?
Besser wäre natürlich wenn man ein 2.Panel irgendwie dazubekommen könnte grundsätzlich über dem ersten zu sein..

Edit:
Das mit dem Form2 im Vordergrundhalten hat sich erledigt: Form2.FormStyle := fsStayOnTop;
Ich bin heut wohl bissl zu schnell mit Fragen
Mit den Panels wäre es trotzdem schöner...

Achja und ich hab schon wieder ne Frage.. Ist es eigentlich möglich ein video größer zu machen? und überhaupt die Größe des Videos rauszufinden und sowas?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#12

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 00:14
Zitat von Quetzalcoatl:
Achja und ich hab schon wieder ne Frage.. Ist es eigentlich möglich ein video größer zu machen? und überhaupt die Größe des Videos rauszufinden und sowas?
Delphi-Referenz durchsuchenDisplayRect, Hier im Forum suchenDisplayRect

Irgendwie hab ich immer noch net raus, was Du genau vor hast
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Quetzalcoatl

Registriert seit: 11. Apr 2007
30 Beiträge
 
#13

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 01:02
Perfekt ^^ das is genau was ich gesucht hab, danke...
so dann sollte das soweit, mit dem umweg über das zweite Formblatt gehen..
Öh, was ich genau will hab ich nich gesagt stimmt.. weil dann lacht ihr mich ja alle aus ^^
Im Prinzip gehts um Motion Capturing. Also Ich glaub ja nich das das so ganz einfach möglich ist,
im Moment gehts mir auch mehr um das Prinzip. Also ich hab ein Video, wo ich mit Tischtennisbällen an den Gelenken ne Bewegung mache ^^. Dann fängt das Programm an: zuerst werden an verschiedenen Stellen im Video vom Benutzer die Bälle markiert. Es wird ein Rechteck draufgesetzt. So an 6 Stellen oder sowas. Dann werden alle Stellen (also alle Punkte in jedem Rechteck) analysiert auf die Farbe hin und dann ein Mittelwert gebildet, sodass ich die Farbe von den Bällen habe. Dann kommt der nächste Schritt:
Das Video wird abgespielt und wo die Aufnahme starten soll wird gestoppt und es werden die Bälle in diesem einem Frame markiert (wird dann ein roter Kringel drumgemalt). Jetzt wird das video weitergespielt und es werden immer wieder mittels der Referenzfarbe vom Anfang die Bälle gesucht und der Kringel entsprechend nachgeführt.
Darum gehts erstmal. hab das in nem Basic-Dialekt mal programmiert, die Nachführung der Bälle hat sogar funktioniert, das Problem lag höchstens in der Videoqualität. hab halt nur ne Digitalkamera mit 320x240 oder so. Und jetzt will ich das in Delphi schreiben weil mit dem Basic-Dialekt den ich hatte (DarkBasicPro) ist das immer so aufwendig eine ordentliche Umgebung zu schaffen, sprich Buttons usw.
Der nächste Schritt wäre dann die Positionen bzw. Rotationen der Gelenke in irgendein vernünftiges Animationsformat was ich mir noch ausdenken müsste zu packen (wäre dann für 3D-Objekte mit Limbs).. Der Schritt wird wohl bissl schwierig für mich werden und daran wirds wohl dann auch scheitern, aber ich hab schon Spass am Nachführen der Tischtennisbälle ^^ Ein anders Problem ist dann ja auch noch, dass ich mit einer Kamera so ja erstmal auch keine Dreidimensionalität erzeugen kann.. aber was solls ^^
Entschuldigung für den Roman, und danke für eure Hilfe soweit,
Quetzalcoatl
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 03:09
Motion Capturing Algorithmus in C#
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Quetzalcoatl

Registriert seit: 11. Apr 2007
30 Beiträge
 
#15

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 12:19
jo um sowas gehts im Prinzip, nur das mir der Algorithmus so nicht weiterhilft, weil der das ganze sich bewegende Objekt registriert und ich ja die Gelenke suche..
  Mit Zitat antworten Zitat
Benutzerbild von Light
Light

Registriert seit: 3. Feb 2006
Ort: Paderborn NRW
123 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 14:38
Hi Quetzalcoatl,

also ich finde die Idee nicht zum auslachen!
weil du weißt ja selbst (hast es ja auch extra so geschrieben)
das es irgendwo dann verdammt schwierig wird

Aber so um ein Bisschen mit Video zu experimentieren ists doch klasse!

Hab mal ne Programm geschrieben was ne WebCam eingelesen hat (fremdkomponente *g*)
und dann damit nen bisschen grundlegende Video "Manipulation" ausprobiert...
also negative und co *g*
aber nicht live weil schon alle 10sec ein Bild bearbeiten über Canvase sehr viel
Rechenzeit beansprucht^^

Und ich hab mal versucht so ein "Arlarm-Programm" zu machen - also einfach ein Bild definiert und dann so schnell wie möglich halt jedes neue bild mit dem Vorgaben Bild verglichen und bei zu vielen Abweichungen ne Meldung ausgegeben -
Klingt ja eigentlich einfach - ich musste aber feststellen das so ne Webcam sehr Stark rauscht -
also da schon ohne das sich das licht und irgendwas in dem Raum verändert - sehr starke Schwankungen Vorgabenbild auftreten...
macht aufjedenfall Spaß damit zu Spielen/Experimentieren....

nur momentan bin ich schlichtweg zu geizig mir ne neue Webcam zu kaufen nur weil die alte unter XP nich mehr läuft....

Leuchtende Grüße

Stefan
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 17:12
Um dem Timer-Gekrampfe mal ein Ende zu bereiten: TMediaplayer sowie viele andere Videoabspielkomponenten zeichnen nicht einfach auf nem Canvas rum, sondern nutzen ein Fensterhandle als Anhaltspunkt dafür, wo das Overlay hin platziert werden soll. Overlay bedeutet dabei, dass dieser Teil des Bildes komplett an der normalen Windows-Grafik vorbei läuft, und man nicht über die üblichen Methoden an die Bilddaten heran kommt, bzw. sie bearbeiten kann. Im Falle des Mediaplayers handelt es sich dabei um ein DirectX Overlay, und an das zu kommen ist echt nicht trivial (gab es auch mal einige Diskussionen zu im Forum, bezogen auf 3D-Spiele. Da ists das selbe Problem.)
Die einfachste Variante ist es, garkeine Playerkomponente an sich dafür zu bemühen, sondern sich die Bilddaten Frameweise aus der Datei zu holen. Um dies zu tun, kann man sich ewig mit der API für Videocodecs beschäftigen, oder man nimmt z.B. Hier im Forum suchenDSPack dafür . Damit lässt sich ein komplettes Video in Bitmaps zerlegt bearbeiten, und je nach dem wie schnell dies von statten geht, kann man nun noch selbst für die Anzeige sorgen. (Alternativ halt wieder mit dem DSPack ein zweites Video encodieren mit den Änderungen.)

Jeder Versuch einfach so auf ein Video zu zeichnen, wird im aller besten Fall flackern wie Hölle, wenn überhaupt
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#18

Re: Zeichnen auf Video?

  Alt 12. Apr 2007, 18:54
Zitat von dizzy:
Um dem Timer-Gekrampfe mal ein Ende zu bereiten: TMediaplayer sowie viele andere Videoabspielkomponenten zeichnen nicht einfach auf nem Canvas rum, sondern nutzen ein Fensterhandle als Anhaltspunkt dafür, wo das Overlay hin platziert werden soll. Overlay bedeutet dabei, dass dieser Teil des Bildes komplett an der normalen Windows-Grafik vorbei läuft, und man nicht über die üblichen Methoden an die Bilddaten heran kommt, bzw. sie bearbeiten kann. Im Falle des Mediaplayers handelt es sich dabei um ein DirectX Overlay, und an das zu kommen ist echt nicht trivial (gab es auch mal einige Diskussionen zu im Forum, bezogen auf 3D-Spiele. Da ists das selbe Problem.)
Du verwechselt den TMediaPlayer (MCI) mit dem Windows MediaPlayer (DirectShow).
MCI nutzt die Standard GDI, DirectX gabs in Win 3.x noch gar net.
DirectShow nutzt Overlays, aber nur wenn sie nicht deaktiviert wurden...

Zitat von dizzy:
Jeder Versuch einfach so auf ein Video zu zeichnen, wird im aller besten Fall flackern wie Hölle, wenn überhaupt
Denkste, mein Player zeichnet auf ein Video (indirekt), um Titel und Interpret anzuzeigen, ohne Flimmern Guckste
Wenn man sich in den Draw-Handler einklinkt geht das auch direkt, war mir aber zu mühsam

@Quetzalcoatl: Du kannst es mit wie es dizzy beschrieben hat ohne Player machen, oder es, wo Du es schon mit dem MediaPlayer versuchst es auf ein Panel abspielen lassen und dieses bei jedem MCI Signal in ein Bitmap zu Capturen, womit Du dann mit ScanLine schneller zugreifen kannst.
Obwohl ich dazu sagen muß, so ist es einfacher zu Programmieren, aber benötigt auch etwas mehr Rechenzeit der CPU...
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Quetzalcoatl

Registriert seit: 11. Apr 2007
30 Beiträge
 
#19

Re: Zeichnen auf Video?

  Alt 13. Apr 2007, 02:01
So, schon wieder ne Frage:
ich versuche gerade die Position des Videos über ne Trackbar verstellbar zu machen.
Also Die Trackbar soll wenn Play gedrückt wird mitlaufen.. Soweit kein Problem, hab in nem Timer einfach:
Trackbar1.Position:=MediaPlayer1.Position;
Nur sollte man über die Trackbar auch selber noch eine beliebige Position einstellen können. Das hatte ich auch schonmal am Laufen, aber immer nur das eine oder das andre. also entweder die Trackbar läuft schön mit dem video oder ich kann selber die position über die trackbar verstellen.. Wie krieg ich jetzt beides zusammen?
Oder gibts was um zu prüfen ob das Video grad läuft, dass man halt "Trackbar1.Position:=MediaPlayer1.Position;" nur dann macht wenn play gedrückt wurde?

Danke für jede Hilfe,
Quetzalcoatl
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#20

Re: Zeichnen auf Video?

  Alt 13. Apr 2007, 03:27
Schau mal nach Delphi-Referenz durchsuchenTMediaPlayer.Mode

Du könntest das auch so einbauen, das Du in der TrackBar.OnChange guckst, ob die den Fokus hat, nur so ne Schnapsidee am Rande

Delphi-Quellcode:
If TrackBar1.Focused then
   MediaPlayer1.Position:=TrackBar1.Position else
      TrackBar1.Position:=MediaPlayer1.Position;
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz