Die Ereigniserfassung mit der rechten Maustaste funktioniert nicht mit opencv-python

Inhalt

Wie der Titel schon sagt. Ich habe Mausereignisse mit opencv-python erhalten. ** Als ich versuchte, Ereignisse mit der rechten Maustaste abzurufen, wurde das Menü mit der Standardfunktion ** geöffnet. Ich habe festgestellt, dass es einigen Leuten gut geht, ohne etwas zu tun, daher kann die opencv-Version die Ursache sein.

--Umgebung Ubuntu 18.04 LTS
opencv install mit pip (wahrscheinlich aus diesem Grund) --Datum (und Uhrzeit 2019/11/20

Lösung

opencv 2.2 Dokumentation »Benutzeroberfläche stackoverflow/Why does a right click open a drop down menu in my OpenCV imshow() window?

Laut ** scheint ein Rechtsklick zum Öffnen des Menüs ein Merkmal dieses Qt-Backends zu sein **. Es scheint also, dass wir diese Funktion entfernen oder ein anderes Backend verwenden müssen. Ich bin mir über das Backend nicht sicher und brauche diese Funktion nicht, daher werde ich sie entfernen.

[Aus dem offiziellen Dokument oben]

--flags Fensterflaggen. Die derzeit unterstützten Flags sind: --CV_WINDOW_NORMAL oder CV_WINDOW_AUTOSIZE: Wenn Sie CV_WINDOW_NORMAL angeben, kann der Benutzer die Fenstergröße ändern. Wenn Sie dagegen CV_WINDOW_AUTOSIZE angeben, wird die Fenstergröße automatisch an das angezeigte Bild angepasst (siehe ShowImage), und der Benutzer kann die Fenstergröße nicht ändern. --CV_WINDOW_FREERATIO oder CV_WINDOW_KEEPRATIO: Wenn CV_WINDOW_FREERATIO angegeben ist, wird die Bildgröße angepasst, ohne das Seitenverhältnis beizubehalten, und umgekehrt, wenn CV_WINDOW_KEEPRATIO angegeben ist, wird das Seitenverhältnis angepasst. --CV_GUI_NORMAL oder CV_GUI_EXPANDED: Sie können CV_GUI_NORMAL angeben, um das vorherige Fenster ohne Statusleiste und Symbolleiste anzuzeigen. Wenn Sie dagegen CV_GUI_EXPANDED angeben, wird eine neue erweiterte GUI angezeigt.

Anscheinend können Sie dies tun, indem Sie das Flag-Argument von "cv2.namedWindow" angeben.

cv2.namedWindow("hoge", CV_GUI_NORMAL)
cv2.namedWindow("hoge", cv2.CV_GUI_NORMAL)
cv2.namedWindow("hoge", cv.CV_GUI_NORMAL)

Keiner war gut !!!

Ich wundere mich warum ...

stackoverflow / NameError: globaler Name 'CV_GUI_NORMAL' ist nicht definiert Wert ist geschrieben, ...

WINDOW_AUTOSIZE = 1
WINDOW_FREERATIO = 256
WINDOW_FULLSCREEN = 1

WINDOW_GUI_EXPANDED = 0
WINDOW_GUI_NORMAL = 16

WINDOW_KEEPRATIO = 0
WINDOW_NORMAL = 0
WINDOW_OPENGL = 4096

WND_PROP_ASPECT_RATIO = 2

WND_PROP_AUTOSIZE = 1
WND_PROP_FULLSCREEN = 0
WND_PROP_OPENGL = 3
WND_PROP_VISIBLE = 4

Da WINDOW_GUI_NORMAL = 16, ...

cv2.namedWindow("hoge", 16)

Es funktionierte !!!

Die oben genannten Nummern werden ausführlich in der allgemeinen Benutzeroberfläche beschrieben.

Recommended Posts

Die Ereigniserfassung mit der rechten Maustaste funktioniert nicht mit opencv-python
Der Befehl gqlgen funktioniert nicht mit go's gqlgen
Wenn die Platzhalterspezifikation mit Pylint nicht funktioniert
Tag 65 (Lösung) Das Jupyter-Notebook funktioniert nicht mit dem nicht verbundenen Kernel.
LocateCenterOnScreen funktioniert nicht mit PyAutoGui
(Wird untersucht) USB-Kamera, die mit WebRTC unter RPi4 nicht funktioniert
Das Autopep8-Format [VScode] funktioniert nicht. [Python]
Virtualenv funktioniert nicht unter Python 3.5 (Windows)
Beispiel, was zu tun ist, wenn das Beispielskript nicht funktioniert (OpenCV-Python)
Nach der Installation von php7.2 funktioniert der Befehl php nicht
Jinja2 2.9.6 funktioniert nicht mit der Lambda Python 3-Serie
[Python] Ausdruck (1,2) macht kein Taple mit Klammern
[systemd] Wie gehe ich mit dem Problem um, dass fancontrol nach dem Anhalten nicht funktioniert?