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
2 Bilder mit einem Button anklicken
@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.
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.
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Wie kann der Code denn bei zwei Bildern und einem Button zu lang für deinen Beitrag sein?Sebi.Schneider hat geschrieben:Ich würde zwar gerne mein Code posten, jedoch ist es viel zu lang :K
(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...
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@BlackJack
ja da hast du Recht. hier mein Code
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__":
.....
.....
@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.
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@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
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
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Code: Alles auswählen
self.videoAnzeige
...
self.cameraDevice
...
self.onNewCameraFrame
Code: Alles auswählen
if __name__ == "__main__":
.....
.....

Vielleicht den Hinweis von BlackJack genauer beachten:
Ohne lauffähigen Code, der beim Ausführen den Fehler reproduziert, kann dir niemand helfen!BlackJack hat geschrieben:... Also ein minimal lauffähiges Beispiel was jeder möglichst einfach nachvollziehen kann.
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@Madmartigan hab an dich den Code mal gesendet, vllt hast du dadurch etwas eine bessere Übersicht was ich vorhabe
@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.
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.
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@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'
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'
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.
Das Leben ist wie ein Tennisball.
@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.