Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Webcam Bild erzeugen/Lösungsansätze  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
kpeter
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.09.2006
Beiträge: 919
Beitrag kpeter Mitglied 19:40:48 10.03.2010   Titel:              Zitieren

Hallo,

sehr kompakter und minimalistischer Code ;) .

Die Fenster Handle sind nicht korrekt platziert.

Header-Dekl. in Zeile 13, 14 und 29 löschen und in private setzen:

C/C++ Code:
// *.h-Datei:

private:
   HWND hWebcam;
   HWND hwnd;
C/C++ Code:
// *.h-Datei:

private:
HWND hWebcam;
HWND hwnd;
C/C++ Code:
// *.h-Datei:

private:
   HWND hWebcam;
   HWND hwnd;


Zeile 30 in der *.cpp heisst dann nur

C/C++ Code:
   hwnd = Panel1->Handle;
C/C++ Code:
hwnd = Panel1->Handle;
C/C++ Code:
   hwnd = Panel1->Handle;


Beim Beenden des Programmes muss noch disconnected werden (spätestens im Destruktor).
Das Erstellen des Video-Fensters würde ich komplett in den Konstruktor verlagern; OnFormCreate sollte nicht (mehr) verwendet werden.
Dazu gibts auch im Forum Beiträge.


mfg
kpeter

edit1: Die SendMessages geben jeweils einen Boolscher Wert, je nach Erfolg, zurück.
Dieser sollte vor Ausführen der folgenden SendMessage ausgewertet werden. Also in der Art

C/C++ Code:
   if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
      return;
C/C++ Code:
if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
return;
C/C++ Code:
   if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
      return;


edit2:

Das hier
C/C++ Code:
   Panel1->SetBounds( 5, 5, DokuCam->Width-160, DokuCam->Height-40);
   SetWindowPos(hWebcam, NULL, 0, 0, wi, hi, SWP_NOZORDER | SWP_NOMOVE);
C/C++ Code:
Panel1->SetBounds( 5, 5, DokuCam->Width-160, DokuCam->Height-40);
SetWindowPos(hWebcam, NULL, 0, 0, wi, hi, SWP_NOZORDER | SWP_NOMOVE);
C/C++ Code:
   Panel1->SetBounds( 5, 5, DokuCam->Width-160, DokuCam->Height-40);
   SetWindowPos(hWebcam, NULL, 0, 0, wi, hi, SWP_NOZORDER | SWP_NOMOVE);


erzeugt mit Sicherheit einen Ausschnitt des Videofensters, wenn das Panel kleiner als wi, hi ist;
Breite und Höhe sind verschieden.
Gibts dafür einen Grund?


Zuletzt bearbeitet von kpeter am 20:12:31 10.03.2010, insgesamt 3-mal bearbeitet
hat-schii
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.02.2010
Beiträge: 6
Beitrag hat-schii Mitglied 10:01:48 12.03.2010   Titel:              Zitieren

Vielen Dank!

Code:
   if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
      return;
Code:
if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
return;
Code:
   if (!SendMessage(hWebcam, WM_CAP_DRIVER_CONNECT,0, 0))
      return;


Das wars gewesen! Brauch dabei auch den CAPSTATUS etc nichtmehr sondern nurnoch die SetWindowsPos().

Jetzt wird sich an die Schwarz/weiß Funktion, Kontrast-, Farbe-, Helligeit- Balken gesetzt!, wenn wir (malwieder) nicht weiterkommen, meld ich mich ;)

Nochmal ne Frage:
Wieso sollte man die Videostellung im Konstruktor machen und nicht (mehr) in der FormCreate? Gibt es dafür einen Grund?
kpeter
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.09.2006
Beiträge: 919
Beitrag kpeter Mitglied 00:12:30 13.03.2010   Titel:              Zitieren

hat-schii schrieb:

Wieso sollte man die Videostellung im Konstruktor machen und nicht (mehr) in der FormCreate?

Hier der weiterführende Link , ab ca. Mitte des Threads.
Gast123123
Unregistrierter




Beitrag Gast123123 Unregistrierter 11:47:30 17.03.2010   Titel:              Zitieren

Moin, moin,
ich habe ein ähnliches Projekt am Laufen und ich versuche grad eine zoomfunktion einzubauen, hab bisher aber keinen Zoom für Videostreams (vfw) gefunden.

Danke für eure Hilfe
kpeter
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.09.2006
Beiträge: 919
Beitrag kpeter Mitglied 12:17:15 17.03.2010   Titel:              Zitieren

Hallo,

in MCI-Devices ist Zooming möglich. Mit dem Makro capSetMCIDeviceName leitet man den Videostream weiter.
Hier der Link dazu.
Probiert hab ichs selbst noch nicht...
mfg
kpeter

edit: Möglicherweise gehts nur in Richtung MCIDevice->CaptureWindow.
Eine andere Möglichkeit ist die Frames auszulesen und zu stretchen.


Zuletzt bearbeitet von kpeter am 12:26:19 17.03.2010, insgesamt 2-mal bearbeitet
hat-schii
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.02.2010
Beiträge: 6
Beitrag hat-schii Mitglied 09:55:19 18.03.2010   Titel:              Zitieren

Gibt es eine Möglichkeit das Hauptformular durch einen Befehl zu maximieren?

Zoom und die Einstellungen der Farbe etc machen auchnoch Probleme, aber da sind wir grad eifrig dabei ;) Die MCI Devices haben uns soweit nicht geholfem wahrscheinlich haben wir sie falsch verwendet

MFG
r4yz0r
Unregistrierter




Beitrag r4yz0r Unregistrierter 10:33:17 18.03.2010   Titel:              Zitieren

Bei der Zoomfunktion hab ich jetzt einen Button erstellt, der folgendes machen soll:
Code:
void __fastcall TDokuCam::Zoom_BClick(TObject *Sender)
{
 capSetMCIDeviceName(hWebcam, web_bild);
 MCIWndSetZoom(hWebcam,200);
}
Code:
void __fastcall TDokuCam::Zoom_BClick(TObject *Sender)
{
capSetMCIDeviceName(hWebcam, web_bild);
MCIWndSetZoom(hWebcam,200);
}
Code:
void __fastcall TDokuCam::Zoom_BClick(TObject *Sender)
{
 capSetMCIDeviceName(hWebcam, web_bild);
 MCIWndSetZoom(hWebcam,200);
}


ich hab kA warum nichts passiert, weil ich irgentwie die MCI-Funktionen nicht versteh.
kpeter
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.09.2006
Beiträge: 919
Beitrag kpeter Mitglied 11:53:15 18.03.2010   Titel:              Zitieren

hat-schii schrieb:
Gibt es eine Möglichkeit das Hauptformular durch einen Befehl zu maximieren?


C/C++ Code:
   WindowState = wsMaximized;
C/C++ Code:
WindowState = wsMaximized;
C/C++ Code:
   WindowState = wsMaximized;
C/C++ Forum :: VCL (C++ Builder) ::  Webcam Bild erzeugen/Lösungsansätze  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.