Ich möchte über eine Benutzeroberfläche ein Pop-Up-Fenster öffnen um mir ein Livebild anzuzeigen. Ein neues Fenster zu öffnen und den Buttons Funktionen zuzuweisen funktioniert ohne Probleme. Die Fenster erstelle ich mit dem QtDesigner. Des Weiteren kann ich mir mit folgendem Code ein Livebild anzeigen lassen.
Mein Problem ist, dass ich das im Code erzeugte Livebild nur über die ESC-Taste schließen kann. Mein System soll am Ende aber ohne Tastatur/nur mittels eines Touchscreens arbeiten. Daher möchte ich das Livebild in einem Fenster darstellen, welches einen Button zum schließen hat.
Kann mir jemand sagen, wie ich das Livebild mit dem Fenster verknüpfe / gemeinsam öffne?
Nicht mit opencv. Das zielt mit seiner highgui darauf ab, einen simplen und unkomplizierten Weg anzubieten, Fenster und eine Reihe von GUI controls darzustellen.
In dem Moment, wo du eine echte GUI drum rum willst, kommt die mit der highgui in Konflikt. Stattdessen muss dein Qt Programm die Kontrolle übernehmen, und per Timer die Frames aus dem capture holen. Wie zb hier: http://benhoff.net/face-detection-opencv-pyqt.html
@okliw994: Randbemerkung: Die Klammern beim ``while`` gehören da nicht hin. Das ist keine Funktion, sollte also auch nicht so geschrieben werden als wäre es eine.
Ausserdem ist die Einrückung falsch. Man rückt vier Leerzeichen pro Ebene ein. Keine Tabs und schon gar nicht Tabs und Leerzeichen gemischt.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
Für den vorgeschlagenen Weg fehlen mir anscheinend zu viel Vorkenntnisse um diesen zu verstehen.
Wie kann ich denn sonst die Webcam ohne opencv nutzen? Gibt es noch andere Bibliotheken?
Du kannst stattdessen QMultiMedia nehmen. Ob das ohne Vorkenntnisse besser funktioniert wage ich aber zu bezweifeln. Du kannst auch opencv und dem Maus-callback eine GUI von Hand Stricken. Das ist ein bisschen durch die Brust ins Auge, aber je nach Anwendung ggf ok.
Um das nochmal klarzustellen: du hast von einer Qt5 Integration gesprochen. DAS geht nicht anders als gezeigt. highgui kann Maus Ereignisse, und natürlich kannst du damit auch eine Interaktion bauen. Wird allerdings mühselig.
Pygame hat eine (experimentelle) API für Webcams. Wenn es Dir reicht wenn der Benutzer irgendwo klicken kann oder Du Code für eine Schaltfläche selber schreiben möchtest. Wäre dann halt auch keine Qt-Anwendung. Wenn Du Qt willst, musst Du Dich wohl oder übel mit Qt auseinandersetzen.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
@__deets__: Okay, wenn man die Bilder danach irgendwie mit OpenCV weiterverarbeiten will, dann wäre es natürlich ziemlich unsinnig etwas anderes als OpenCV für das lesen der Bilder von der Webcam zu verwenden.
Einen OpenCV-Frame — also eigentlich ja ein Numpy-Array — in ein Pygame-Surface umzuwandeln ist aber auch nicht sooo schwer. Im Grunde muss man AFAIK nur die BGR→RGB-Konvertierung mit der passenden OpenCV-Funktion machen und dann mit der passenden Pygame-Funktion aus dem Numpy-Array ein Pygame-Surface. Die Frage ist halt was da noch an GUI-Anforderungen sind.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
Nach einem Beispiel per Timer ein OpenCV-capture auslesen und darstellen ist auch nicht sooo schwer Das ist halt mein Punkt: man wird sich schon ein bisschen reinknieen muessen, wenn man zwei solche Technologien miteinander verheiraten will. Egal wo man am Ende landet.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002