none
Webcam aus einem Programm heraus auslösen und als Foto (Datei) speichern RRS feed

  • Frage

  • Liebe Programmiergemeinde,

    ich möchte nach scannen (barcode) eines Lieferscheines die Ware
    automatisch per Webcam (Logitech) fotografieren.

    Ist das Utopie oder habe ich eine Chance?

    Herzlichen Dank!
    Bernd
    Nothing Is As Easy As It Looks
    Donnerstag, 25. Februar 2010 20:29

Antworten

Alle Antworten

  • Hallo BerndBen,

    Im folgenden Beispiel (VB.NET) wird mithilfe von avicap32.dll die Webcam gestartet, und man kann das Bild als Beliebiges Format speichern (.bmp im Beispiel aber es geht auch .jpeg).

    http://www.vb-helper.com/howto_net_video_capture.html

    Grüße,

    Robert

    Freitag, 26. Februar 2010 07:49
    Moderator
  • Vielen Dank Robert!

    Werde versuchen das auch in C++ zu realisieren.

    Vielleicht brauche ich dazu noch einmal deine Hilfe.

    Gruß
    Bernd
    Nothing Is As Easy As It Looks
    Freitag, 26. Februar 2010 08:15
  • Hallo Robert,

    vielen Dank, es funktioniert, aber weiß du vielleicht warum die Qualität
    so schlecht ist?

    Gruß
    Bernd
    Nothing Is As Easy As It Looks
    Donnerstag, 4. März 2010 19:20
  • Hallo BerndBernd,

    Ich bekomme zum Beispiel eine gut sichtbare BMP Datei aus der Anwendung wenn ich sie auf meinem Laptop mit integrierten Webcam laufen lasse.
    Die Datei hat 640x480 Pixel und 32 Bit depth.

    Ich glaube die Qualität hängt ab auch an dem Capture Gerät, Licht in der Umgebung und vielleicht auf noch andere Faktoren. Man kann versuchen verschiedene Formate speichern und sehen wie die aussehen.

    zum Beispiel die Zeile: bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp) aus der Anwendung mit bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Tiff) ändern oder mit bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Jpeg)



    Noch ein paar interessante Artikel mithilfe von DirectX:

    http://www.codeproject.com/KB/directx/directxcapture.aspx

    http://www.codeproject.com/KB/directx/DirXVidStrm.aspx

    Grüße,

    Robert

    Freitag, 5. März 2010 09:07
    Moderator
  • Vielen Dank Robert,

    mit VB funktioniert es!
    Hast du vielleicht eine Ahnung wie ich die DLL in Visual C++/Windows Form
    ansprechen kann?
    Wenn ich einen Verweis auf diese avicap32.dll machen möchte kommt die Fehlermeldung
    "...kein Verweis möglich, da sie weder eine NET-Assembly, noch ein Activ-X
    Steuerelement ist!"
    Ich habe mein C++ Programm so gut wie fertig und möchte nicht alles noch einmal
    mit VB programmieren!

    Vielen Dank für jede Hilfe!
    Gruß
    Bernd 
    Nothing Is As Easy As It Looks
    Samstag, 6. März 2010 16:57
  • Hallo BerndBen,

    Hier etwas für Dich gefunden:

    http://www.codeproject.com/KB/audio-video/Cpp_DShowNET_FrameCap.aspx --> Visual Studio C++ .NET Express: Using DirectShow in a Webcam Capture Application

    http://www.codeproject.com/KB/audio-video/avicapwrp.aspx

    http://www.codeguru.com/cpp/g-m/multimedia/audio/article.php/c1579/

    Grüße,

    Robert

    Montag, 8. März 2010 13:35
    Moderator
  • Vielen Dank, sehr nett von dir!!!

    Mein Bild-Qualitätsproblem ist mir treu geblieben!
    Ein Änderung von 640x480 auf 1280x860 und BMP auf JPG
    bleibt ohne jeglichen Erfolg obwohl die Kamera eine 5MB Optik hat.

     

    hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 1280, 860, picCapture.Handle.ToInt32, 0)
    bmap.Save(sFileName, System.Drawing.Imaging.ImageFormat.Jpeg)


    Meine SW ist fertig, ich auch!
    Vielleicht noch eine Idee?
    Gruß
    Bernd


    Nothing Is As Easy As It Looks
    Mittwoch, 10. März 2010 14:20
  • Hallo BerndBen,

    Schau Dir mal die folgende Diskussion an. Vielleicht findest Du noch etwas was Dir weiter helfen kann.

    http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/3c6b7dae-4600-4f74-9c47-c48e0b76f0cf/

    Es wird noch zum Beispiel, was ich hier sehe, ein Encoder auf Encoder.Quality = 100 gestellt.

    Grüße und Erfolg,

    Robert

    Mittwoch, 10. März 2010 14:41
    Moderator
  • könnt ihr mir das c++ programm bzw den quellcode bitte zukommen lassen

    an akku_duracell@yahoo.de

    währe echt net

    vielen dank im voraus

    Dienstag, 11. Mai 2010 15:47
  • Hallo DONHH1982,

    Hier ist der Link zu einem Beispiel in Visual Studio C++ .NET: Visual Studio C++ .NET Express: Using DirectShow in a Webcam Capture Application

    Die meisten Beispiele die ich gefunden habe sind aber in C# oder Visual Basic geschrieben. Für C++ konnte ich nur das obige Beispiel finden. Dieses enthält auch die kompilierte exe Datei sowie den SourceCode.

    Hoffe das hilft Dir weiter.

    Grüße,

    Robert

    Mittwoch, 12. Mai 2010 07:30
    Moderator
  • erst einmal vielen Dank für die schnelle antw.

    das Programm ist zwar schön super ist auch das der SourceCode enthalten ist so das ich noch was lernen kann

    aber leider bin ich nicht so firm in der sprache

    suche etwas ohne button

    Programm startet, macht ein foto wohin auch immer und in welchem format auch immer

     

    grübe

    nobre

    Mittwoch, 12. Mai 2010 18:52
  • das Programm ist zwar schön super ist auch das der SourceCode enthalten ist so das ich noch was lernen kann

    aber leider bin ich nicht so firm in der sprache

    Hallo nobre,

    Meinst Du die Visual Studio C++ .NET Sprache?

    Dann ist ja für Dich das beste Beispiel dieses (Visual Basic .NET Entwicklersprache): http://www.vb-helper.com/howto_net_video_capture.html

    In diesem Beispiel gibt’s drei Knöpfe: Start Preview (startet die Webcam), Stop Preview (stoppt die Webcam), Save Image (Bild speichern). Man kann doch einfach durch den Code machen, dass diese Knöpfe sich automatisch einer nach einen anderen von „allein drucken“ sollen.

    Grüße,

    Robert

    Montag, 17. Mai 2010 09:19
    Moderator
  • JEtzt schon mal vielen dank ...

    wie gesagt bin darin nicht so firm .. hast nen Tip?

    Montag, 17. Mai 2010 16:36