Seite 1 von 1
2 Bilder mit einem Button anklicken
Verfasst: Donnerstag 7. November 2013, 13:02
von Sebi.Schneider
Hallo Freunde,
ich habe 2 Bilder zum anzeigen.
Die ich mit cv2.imread einlese
dazu hab ich auch einen ButtonHandle, der auf Knopfdruck entscheidet, was getan werden soll.
Ich würde zwar gerne mein Code posten, jedoch ist es viel zu lang :K
beim Init hab ich ein Standartbild, so wenn ich nun ein Kopf drücke, das andere Bild zu nehmen und es
in meinem Widget einzusetzen, scheitert er. :K :K
Re: 2 Bilder mit einem Button anklicken
Verfasst: Donnerstag 7. November 2013, 13:19
von BlackJack
@Sebi.Schneider: Wie soll man denn bei *der* Beschreibung helfen? Das einzige was man sagen kann: Du machst in dem Quelltext den Du nicht zeigst irgendetwas falsch. Wenn man weder Quelltext noch Fehlermeldung zeigt, kann man ja nicht einmal vernünftig raten woran es liegen könnte.
Wenn der Quelltext zu lang ist, dann reduziere ihn auf das minimal notwendige was immer noch das Problem enthält. Also ein minimal lauffähiges Beispiel was jeder möglichst einfach nachvollziehen kann.
Re: 2 Bilder mit einem Button anklicken
Verfasst: Donnerstag 7. November 2013, 16:11
von Madmartigan
Sebi.Schneider hat geschrieben:Ich würde zwar gerne mein Code posten, jedoch ist es viel zu lang :K
Wie kann der Code denn bei zwei Bildern und einem Button zu lang für deinen Beitrag sein?
(Zumal das Forum vertikal skaliert, rein theoretisch(!) könnte man unendlich langen Code posten.

)
Was meinst du denn mit Standard-Bild? Soll der Button beim Click ein anderes Icon bekommen oder was willst du machen?
Fragen über Fragen...
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 12:46
von Sebi.Schneider
@BlackJack
ja da hast du Recht. hier mein Code
Code: Alles auswählen
class MyMainWindow(QtGui.QWidget):
def __init__(self):
# add widget to show the augmented video input image
if self.videoAnzeige:
print "VIdeoAnzeige", self.videoAnzeige
arWidget = ARWidget(self.cameraDevice)
arWidget.newFrame.connect(self.onNewCameraFrame)
vbox.addWidget(arWidget)
else:
image = cv2.imread('smarties.jpg')
arWidget = ARWidget(image)
vbox.addWidget(arWidget)
# hier kommen dann das Hinzufügen von Buttons
def buttonHandle(self):.....
if __name__ == "__main__":
.....
.....
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 14:15
von BlackJack
@Sebi.Schneider: Der Quelltext ist nicht lauffähig. Daran kann man im Grunde überhaupt nichts erkennen, ausser das `self.videoAnzeige` verwendet wird, bevor es definiert wurde. Zumindest anhand dessen was Du zeigst.
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 16:11
von Sebi.Schneider
@BalckJack
Hab dir mal ne PN geschrieben, mit dem gesamten Code. Hoffe du kannst mir da etwas helfen
PS: Gibt es jemanden, der in diesem speziellen Fach ComputerVision, (python) Nachhilfe gegen Bezahlung gibt, gerne auch ONLINE.
Bitte PN an mich
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 16:18
von Madmartigan
Code: Alles auswählen
self.videoAnzeige
...
self.cameraDevice
...
self.onNewCameraFrame
Wo sind diese denn deklariert?
Was passiert hier? Sollen wir das erraten?
Vielleicht den Hinweis von BlackJack genauer beachten:
BlackJack hat geschrieben:... Also ein minimal lauffähiges Beispiel was jeder möglichst einfach nachvollziehen kann.
Ohne lauffähigen Code, der beim Ausführen den Fehler reproduziert, kann dir niemand helfen!
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 16:40
von Sebi.Schneider
@Madmartigan hab an dich den Code mal gesendet, vllt hast du dadurch etwas eine bessere Übersicht was ich vorhabe
Re: 2 Bilder mit einem Button anklicken
Verfasst: Freitag 8. November 2013, 17:18
von BlackJack
@Sebi.Schneider: Es macht wenig Sinn für ein Forum wenn Du jetzt jeden privat und einzeln fragst.
Der Quelltext macht den Eindruck als wenn Du Grundlagen von objektorientierter Programmierung in Python nicht verstanden hast. Man kann zum Beispiel nicht gleichzeitig verschiedene Werte an das selbe Attribut binden. Ein Attribut hat zu einem Zeitpunkt immer genau einen Wert. Wenn Du nacheinander verschiedene Werte an das selbe Attribut bindest, dann hat das Attribut am Ende den Wert der als letztes gebunden wurde. Bei `ARWidget.__init__` „gewinnt” also die zweite definition. Das erste ``def __init__(…):`` hat damit keinen Effekt. Das zusammen mit einigen überflüssigen Semikolons lässt vermuten, dass Du da eigentlich in einer anderen Programmiersprache „denkst”.
Was den hier gezeigten Ausschnitt angeht: Nach dem ich nun die gesamte `MyMainWindow.__init__()` gesehen habe macht das ``if self.videoAnzeige:`` keinen Sinn, denn weiter oben in der Methode wird `self.videoAnzeige` an `False` gebunden und dazwischen steht nichts was das ändern könnte. Bei dem ``if``/``else`` wird also *immer* der ``else``-Zweig ausgeführt, was diese Unterscheidung unsinnig macht. Genau so wenig Sinn macht es in der Behandlung der Schaltflächen *neue* `MyMainWindow`-Objekte zu erstellen, die dann auch gleich wieder verworfen werden.
Re: 2 Bilder mit einem Button anklicken
Verfasst: Dienstag 12. November 2013, 18:04
von Sebi.Schneider
@BlackJack die self.AnzeigeVideo wird jedoch auf True gesetzt, falls der Button "Video Anzeigen" geklickt wurde.
Die zweite Init Methhodennamen hab ich init2 unbenannt
Folgende Fehlermeldung:
Traceback (most recent call last):
File "C:/Users/karaayak/PycharmProjects/Uebung05/Uebung05.py", line 520, in <module>
w = MyMainWindow()
File "C:/Users/karaayak/PycharmProjects/Uebung05/Uebung05.py", line 280, in __init__
arWidget = ARWidget(image)
File "C:/Users/karaayak/PycharmProjects/Uebung05/Uebung05.py", line 77, in __init__
self._cameraDevice.newFrame.connect(self._onNewFrame)
AttributeError: 'numpy.ndarray' object has no attribute 'newFrame'
Re: 2 Bilder mit einem Button anklicken
Verfasst: Dienstag 12. November 2013, 19:24
von EyDu
Die Fehlermeldung verrät dir den Fehler: numpy-ndarray-Objekte haben kein Attribute mit dem Namen newFrame. ``self._cameraDevice`` ist also nicht das Objekt, für das du es hältst.
Re: 2 Bilder mit einem Button anklicken
Verfasst: Dienstag 12. November 2013, 19:31
von BlackJack
@Sebi.Schneider: Dann ist es doch aber für das ``if``/``else`` in der `__init__()` zu spät. Das wird ja nicht auf magische Weise noch einmal ausgeführt nur weil sich ein an der ``if``-Bedingung beteiligter später mal ändert. Das ``if`` macht an der Stelle einfach keinen Sinn.