WebCamStream->Panel Funzt, und wie bekomme ich das in ein Image ?!



  • Also ich denke, das Problem ist, daß du ein Windows-Handle benötigst, aber gleichzeitig die Eigenschaft Canvas benutzen willst.
    Das einzige Control, das dies standardmäßig unterstützt ist TForm.

    Dann kannst du also das Bild von Form->Canvas abgreifen.

    Oder aber du baust dir ein eigenes Control abgeleitet von TCustomControl, da dies sowohl von TWinControl abgeleitet ist als auch die Eigenschaft Canvas besitzt.

    Die anderen Controls (Panel, Memo etc.) unterstützen nicht das direkte Auslesen der Pixel.

    Du kannst dann Canvas->CopyRect(...) benutzen, um die Daten in ein Image zu kopieren und dann abzuspeichern.



  • wenn ichs jetzt aufs tform lade mach mir mal bitte ein beispiel wie es in das image1 dann geht?!



  • Image1->Width = form->Width;  // hier noch passende Breite und Höhe bestimmen
    Image1->Height = form->Height; // falls Form größer als Web-Stream-Image
    Rect r = Image1->ClientRect();
    Rect r2 = Form1->ClientRect();
    
    Image1->CopyRect(r, Form1->Canvas, r2);
    

    Wenn du den letzten Parameter 'r2' veränderst, kannst du den Ausschnitt ändern bzw. das Bild strecken oder stauchen.



  • [C++ Error] Unit2.cpp(24): E2335 Overloaded 'Rect' ambiguous in this context
    [C++ Error] Unit2.cpp(24): E2379 Statement missing ;
    [C++ Error] Unit2.cpp(25): E2335 Overloaded 'Rect' ambiguous in this context
    [C++ Error] Unit2.cpp(25): E2379 Statement missing ;
    [C++ Error] Unit2.cpp(27): E2316 'CopyRect' is not a member of 'TImage'
    [C++ Error] Unit2.cpp(27): E2451 Undefined symbol 'r'
    [C++ Error] Unit2.cpp(27): E2451 Undefined symbol 'r2'

    bei rec meckert er



  • Image1->Width = Form1->Width; // hier noch passende Breite und Höhe bestimmen
    Image1->Height = Form1->Height; // falls Form größer als Web-Stream-Image
    TRect r = Image1->ClientRect();
    TRect r2 = Form1->ClientRect();
    Image1->CopyRect(r, Form1->Canvas, r2);

    ----------------------------------------------------------------

    [C++ Error] Unit2.cpp(23): E2314 Call of nonfunction
    [C++ Error] Unit2.cpp(24): E2314 Call of nonfunction
    [C++ Error] Unit2.cpp(25): E2316 'CopyRect' is not a member of 'TImage'
    [C++ Warning] Unit2.cpp(26): W8004 'r2' is assigned a value that is never used
    [C++ Warning] Unit2.cpp(26): W8004 'r' is assigned a value that is never used



  • Image1->Width = form->Width;  // hier noch passende Breite und Höhe bestimmen
    Image1->Height = form->Height; // falls Form größer als Web-Stream-Image
    TRect r = Image1->ClientRect;
    TRect r2 = Form1->ClientRect;
    
    Image1->Canvas->CopyRect(r, Form1->Canvas, r2);
    

    Warum schreibst du dein Bitmap nich gleich in das Canvas des Images?



  • geht das mit dem quellcode direct ohne rec ?



  • Ja.
    Nimm einfach das ClientRect.



  • funzt hab derzeit nur ne cpu auslastung von ca. 20-35%
    mal gucken ob ich die ihrgend wie runter bekomme dasist noch bissel viel
    gibts ihrgend wie ne möglichkeit die frame rate der cam runter zu bekomme auf 10fps oder so?



  • eins wurmt mich wenn ich die funktion raus nehme die zur speicherung der datei als bmp raus nehme funzt nix mehr

    hab das gefühl das er jedes frame auf hdd speichert und dann wieder ihrgend wie löd oder so?

    kann man den teil mit der hdd speicherung net raus nehmen ? weil den brauch ich mal garnicht..



  • http://www.keksohr.de/index.php?menu=projekt-index-cam-mca-25

    hab hier mal alles drin, quelltexte komme auch die tage 🙂
    bei fragen ins gästebuch oder via mail melden,

    gruß philip


Anmelden zum Antworten